Layer 06

Limitare le dimensioni in upload

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