Limitare le dimensioni in upload


Quando si costruisce uno script atto a effettuare l’upload di un file in coldfusion c’è sempre il problema delle dimensioni del file. Solitamente si vuole limitare le dimensioni possibili del file da caricare sul server onde evitare inutili file enormi sul server.

Un esempio tipico è l’upload di file in formato immagine, esistendo più tipi di immagine è probabile che qualche malinformato o distratto utente carichi un jpg a qualità 100% o peggio ancora un bmp al posto di un jpg.
Colfusion ci da a disposizione uno strumento (variabile) che descrive la dimensione della pagina che si sta per caricare. La variabile in questione è CONTENT_LENGHT descritta nello scope CGI, per accedervi basta farvi riferimento in questo modo: #CGI.CONTENT_LENGHT#

Cosa descrive CONTENT_LENGHT, descrive la quantità di byte che vengono spediti alla pagina dello script, prestate quindi attenzione, non è un controllo per evitare che vengano caricati, ma solo un controllo che sta tra il carimento del file (che viene effettuato) ed la effettiva scrittura del file su disco del server.

Lo script che segue setta una variabile di nome dimMassima che conterrà la dimensione massima auspicabile per un file in upload e tramite la variabile CGI citata or ora si può fare un controllo se la variabile in questione supera quella impostata dallo script basta dare in output un mesaggio di errore ed effettuare un CFABORT (non proprio simpatico ma efficace).

Lo script:

<cfset dimMassima= “1000000”>

<CFIF Val(CGI.CONTENT_LENGTH) GT dimMassima>
    Dimesione massima file <cfoutput>#dimMassima#</cfoutput> bytes,
    tentare con un file più piccolo.
    <CFABORT>
<CFIF>

<CFFILE ACTION=”UPLOAD” FILEFIELD=”FileToUpload” DESTINATION=”F:uploaded” NAMECONFLICT=”Overwrite”>

Dopo il controllo basta effettuare l’upload, l’istruzione CFFILE ACTION=”upload” non viene mai eseguita se la dimensione delle variabili che vengono spedite allo script è superiore alla variabile impostata da programma, Il CFABORT blocca tutto.
NAMECONFLICT porta l’opzione overwrite, l’ho utilizzata per semplicità di codice, ricordo che cffile posside altre opzioni che gesticono anche la collisione tra nomi di file.

Testato su ColdFusion 5.0 Enterprise.

Limitare le dimensioni in upload ultima modifica: 2005-09-27T00:00:00+00:00 da Enrico

Related Posts

Comments are closed.