Coldfusion e Blob database object | MrX

« Toshiba Shocker Monitor Helmet | Main | Technorati Ping »

Coldfusion e Blob database object

By Merlinox | November 9, 2006

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 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 (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 dal 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 :

<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.


Tags: ,

Post simili

2 Responses to “Coldfusion e Blob database object”

  1. k76 aggiunge:

    heheh
    1)
    http://www.etechs.it/howto/database/load-file-into-LOB-field.php

    2)
    http://www.etechs.it/programming/cfusion/lob-field-with-cold-fusion.php

    3)
    http://www.etechs.it/howto/database/Oacle-DBMS_LOB-functions.php

    4)
    http://www.etechs.it/programming/cfusion/CLOB-Oracle-ColdFusion.php

    un’altro po’ di cosine in più :)

  2. Merlinox aggiunge:

    Che fai spammi? Scherzo: grazie mille per i riferimenti

Comments