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.

Loading Facebook Comments ...

2 pensieri su “Coldfusion e Blob database object

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *