Una classe per gestire l’upload di un file in PHP

Mercoledì 4 Giugno 2008 at 11:30 pm (Guide, PHP, Programmazione, Tutti i posts) (, , , , )

Oggi ho creato una classe che ritengo utile e che mi fa piacere condividere con voi, ecco come si usa:
La classe è reperibile quì

Prima pagina: un form di invio dati

Copiare quanto segue in una pagina ed omettere i cancelletti all’inizio delle righe

<form action=”seconda_pagina.php” method=”post” enctype=”multipart/form-data” name=”form1″>
<input type=”file” name=”to_upload”>
<input type=”submit” name=”Submit” value=”Submit”>
</form>

Seconda pagina (seconda_pagina.php)

Apriamo i tags php:
<?

Ed ora cominciamo ad usare la classe:
$upload=new fileUpload;

Configuriamo l’opzione safe_mode (default: 1)
0: Niente safe_mode
1: Non permette allo script di gestire le cartella madri, ovvero permette solo di usare la directory corrente e tutte le sue subdirectories
$upload->safe_mode=1;

Configuriamo l’opzione allow_overwrite:
0: Non permette agli utenti di sovrascrivere files
1: Permette agli utenti di sovrascrivere files
$upload->allow_overwrite=1;

Lista delle estensioni consentite (indicare senza il “.”, es. array(“png”, “gif”))
$upload->allowed_extensions=array(“jpg”,”jpeg”,”bmp”,”gif”,”png”,”tif”, “wav”);

Dimensione massima del file in byte
$upload->max_size=”3145728″;

La cartella nella quale salvare i files
$upload->setTargetDir(“mydir”);

File da uploadare (dove “to_upload” indica il nome del campo file del modulo)
$upload->setTargetFilename($_FILES['to_upload']['name']);

Nome temporaneo del file (non cambiare se non sai cosa tocchi :P )
if($upload->saveFile($_FILES['to_upload']))
{

Azioni da intraprendere qualora il trasferimento fosse andato a buon fine
print “Tutto ok!”;
}

Se vogliamo informare l’utente del massimo numero di bytes inviabile possiamo scrivere quanto segue
print “<strong>Dimensione massima file</strong>: “.$upload->getMaxSize().” bytes<br>\n”;

Configuriamo la modalità debug (questo parametro va inserito sempre in fondo)
0: Modalita’ debug disattivata
1: Modalita’ debug attivata: dei messaggi ti aiuteranno a capire dove si nascondono i problemi
$upload->debug(0);


Chiudiamo ora i tags
?>

Diamo ora uno sguardo al codice completo:

<?
$upload=new fileUpload;
$upload->safe_mode=1;
$upload->allow_overwrite=1;
$upload->allowed_extensions=array(“jpg”,”jpeg”,”bmp”,”gif”,”png”,”tif”, “wav”);
$upload->max_size=3145728;
$upload->setTargetDir(“mydir”);
$upload->setTargetFilename($_FILES['to_upload']['name']);
if($upload->saveFile($_FILES['to_upload']))
{
print “Tutto ok!”;
}
print “<strong>Dimensione massima file</strong>: “.$upload->getMaxSize().” bytes<br>\n”;
$upload->debug(0);
?>

Pubblica un Commento