Coldfusion e Blob database object



Cliccare per ingrandireBlob non è solamente il titolo di un film del 1958, dove una massa informe uccideva la gente, ma è pure l’acronimo di un tipo di dato dei database, e significa: Binary Large OBject
Il campo Blob contraddistingue un dato binario, che può essere immagazzinato direttamente in database. Ad esempio una immagine, invece di salvarla nel file system (HD del server) è possibile caricarla direttamente nel record del DataBase, permettendo un maggior ordine nei dati. Attenzione: non tutto è ora quello che luccica. In questo modo (nel caso di servizi internet) i file binari dovranno essere comunque letti dal DataBase, trasferiti sul WebServer e quindi condivisi: c’è un passaggio di trasmissione dati in più!

Nel sito Awads.net c’è un ottimo tutorial che spiega perfettamente come gestire i Blob utilizzando Coldfusion e, in questo caso, un DataBase Oracle. Non è comunque un problema utilizzare la medesima tecnica per altri DataBase, sempre che supportino i Blob.

Aggiungo all’articolo solo alcuni passaggi particolari.

Se dovete inviare un file ad una pagina per immagazinarlo in un Blob, il form deve essere fatto in questo modo:

<form action="upload_action.cfm" method="POST" enctype="multipart/form-data">
<input name="FileName" type="file">

Per ricevere il file la pagina "upload_action.cfm" dovra prima scaricarlo in una cartella temporale:

<cffile action="upload" filefield="form.FileName" destination="C:\temp\" nameconflict="makeunique" accept="application/octet-stream, application/vnd.ms-excel">

Quindi leggerlo in modo binario e salvarne il contenuto in una variabile:

<cffile action = "readbinary" file = "C:\temp\#cffile.serverFile#" variable="file_blob">

Quindi salvarlo nel DB (tramite un Insert o un Upload):

<cfquery name="q" datasource="#dsn#">
insert into files (file_content) values ( <cfqueryparam value="#file_blob#" cfsqltype="cf_sql_blob"> )
</cfquery>

Per leggere il Blob in coldfusion dal DB e renderlo disponibile, è altrettanto facile.
Dapprima setto il tipo di oggetto per la condivisione, in questo caso come "allegato" di nome "myFile.xls":

<cfheader name="content-disposition" value="attachment; filename=myFile.xls">

Recupero il dato dal DB:

<cfquery name="q" datasource="#dsn#">
select file_content from files where id_file = 10
</cfquery>

Lo rendo disponibile:

<cfcontent type="application/vnd.ms-excel" variable="#q.file_content#">

Quest’ultimo procedimento è un po’ come la pubblicazione di RSS o file XLS prodotti in Coldfusion.
Ricordo che il procedimento è opera dell’autore della pagina anche qui linkata, ho solo fatto alcuni appunti in italiano.

Se trovi questo articolo su un blog diverso da “blog.merlinox.com” si tratta probabilmente di una copia non autorizzata. L’indirizzo originale di questo articolo è: Coldfusion e Blob database object scritto da .

2 Responses to Coldfusion e Blob database object

  1. Merlinox dice:

    Che fai spammi? Scherzo: grazie mille per i riferimenti

Lascia un Commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *

*

È possibile utilizzare questi tag ed attributi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>