[PHP] Upload file

Ultimo aggiornamento 27 agosto 2009 alle 02:11 da nane77
Pubblicato da nane77
Il linguaggio PHP permette di gestire dei file inviati grazie a un modello HTML.



Modulo per l'invio di file


La prima cosa da fare consiste nel creare un modello HTML permettendo all'utente di aprire una finestra di dialogo per scegliere un file da inviare:

<FORM method="POST" action="[il vostro file PHP per l'upload.php]" ENCTYPE="multipart/form-data">
          <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048>
          <INPUT type=file name="nome_del_file">
          <INPUT type=submit value="Inviare">
</FORM>

Da non dimenticare assolutamente l'attributo ENCTYPE="multipart/form-data" ! Se non funziona il modulo non avrà alcun effetto.

Inoltre il campo MAX_FILE_SIZE è l'indicazione della dimensione massima del file da caricare per il browser, ma questo non è sufficiente per assicurarsi che i file scaricati non superino la dimensione nella misura in cui tutti i browser non prendano sistematicamente in conto questo valore. Il valore della dimensione massima del file è modificabile "hard" nel file di configurazione php.ini.

Configurazione di PHP per permettere l'upload


Il file di configurazione php.ini contiene delle direttive che permettono d'autorizzare o non l'invio dei file attraverso un modulo piuttosto che impostarli:

file_uploads= On/Off permette di autorizzare o no l'invio di file.
upload_tmp_dir = directory permette di definire la directory temporanea permettendo di accogliere il file scaricato.
upload_max_filesize = 2M permette di definire la dimensione massima autorizzata per il file. Se si oltrepassa questo limite, il server invierà un codice di errore.
post_max_size indica la dimensione massima dei dati inviati da un modulo. Questa direttiva su upload_max_filesize, bisogna dunque assicurarsi di avere post_max_size superiore a upload_max_filesize

Se non avete acceso alla configurazione (caso di un sito ospitato sul server del fornitore d'accesso o nel caso un hosting mutualizzato), potete verificare la configurazione grazie alla funzione phpinfo() :

<?
  phpinfo();
?>

Recuperare un file con PHP


Il file, come le informazioni che lo riguardano, sono accessibili attraverso la variabile superglobale $_FILES[].
Per visualizzare il suo contenuto, potete utilizzare lo script seguente:

<pre><?  print_r($_FILES); ?></pre>

L'uscita di questo codice sarà della forma seguente:

Array
(
    [nom_du_fichier] => Array
        (
            [name] => Lamiabellafoto.jpg
            [type] => immagine/jpg
            [tmp_name] => cammino_completo_del_file_scaricato
            [error] => 0
            [size] => 1000
        )

) 

Nel caso in alto si tratta di un'immagine JPEG pesante 1 MB.


I campi $_FILES[name], $_FILES[type], $_FILES|error], $_FILES[size] permettono di effettuare dei testi sul tipo di file, la sua dimensione, il nome e verificare se ci sono stati errori.

Altresì, potete trattare gli errori nella maniera seguente:

<?      
if ($_FILES['nome_del_file']['error']) {
          switch ($_FILES['nome_del_file']['error']){
                   case 1: // UPLOAD_ERR_INI_SIZE
                   echo"Il file supera il limite autorizzato dal server (file php.ini) !";
                   break;
                   case 2: // UPLOAD_ERR_FORM_SIZE
                   echo "Il file supera il limite autorizzato nel modulo HTML !");
                   break;
                   case 3: // UPLOAD_ERR_PARTIAL
                   echo "L'invio del file è stato interrotto durante il transfert !";
                   break;
                   case 4: // UPLOAD_ERR_NO_FILE
                   echo "Il file che avete inviato ha una dimensione nulla!");
                   break;
          }
}
else {
 // $_FILES['nome_del_file']['error'] pari a 0 ossia UPLOAD_ERR_OK
 // che significa che non c'è stato alcun errore 
}
?>




Grazie alla funzione move_uploaded_files() è possibile trasferire l'immagine della rubrica temporanea verso una rubrica di destinazione:
<?

if ((isset($_FILES['nome_del_file']['file'])&&($_FILES['nome_del_file']['error'] == UPLOAD_ERR_OK))) {
$percorso_destinazione = '/var/www/files/';
move_uploaded_file($_FILES['nome_del_file']['tmp_name'], $percorso_destinazione.$_FILES['nome_del_file']['name']);
}
?> 



_____________________
Nota: L'articolo originale è stato scritto da jeff contribuente di CommentCaMarche
Migliori risposte per « Upload file » in :
Accedere ai propri file da ovunque Vedi Accedere ai propri file da ovunque Finalità: installare un mini web server sul tuo PC, per consentirti di accedere ai tuoi file da ovunque tramite un semplice browser (in HTTPS) Consente di caricare (upload) e scaricare (download) dei file,...
Condivisione di file su Windows XP Vedi Vantaggi La condivisione di file consiste nel rendere disponibile il contenuto di una o più rubriche attraverso la rete. Tutti i sistemi Windows possiedono dei meccanismi standard che permettono di mettere facilmente in condivisione il contenuto di...
Aprire un file RAR VediIl formato RAR è un formato di compressione molto diffuso. Ci sono diversi software gratuiti per decomprimere un file RAR. Ecco un elenco non esaustivo: ALZip 7zip ZipGenius jZip ____________________________ Nota: L'articolo originale...
Come leggere un file mkv (Matroska) VediBasta scaricare e installare i filtri DirectShow corrispondenti: http://prdownloads.sourceforge.net/guliverkli/matroskasplitter_20040311.zip Un pacchetto è anche presente sul sito http://matroska.free.fr...
Masterizzare o leggere un file .NRG VediUn file .NRG è un' immagine del CD, ovvero una copia binaria di un CD o DVD sotto forma di un file. File. NRG può essere usato da programmi di masterizzazione o dei lettori di dischi virtuali (come Daemon tools). In assenza di un masterizzatore,...
Download SoftPerfect File Recovery VediSoftPerfect File Recovery (solo 253 kb) è usato per recuperare file cancellati accidentalmente, anche dopo lo svuotamento del cestino. Attenzione : È importante che non hai scritto sul disco, nel frattempo. Sostiene i file system FAT12, FAT16,...
Che cos'è un file? VediChe cos'è un file? Un file è una serie di informazioni binarie, cioè una serie di 0 e di 1. Questo file può essere stoccato per mantenere una traccia di queste informazioni. Un file di testo è un file composto da alcuni caratteri stoccati sotto...
WLAN (Reti locali senza fili) - Wireless LAN VediReti locali senza fili (WLAN) La rete locale senza fili (sigla WLAN per Wireless Local Area Network) è una rete che permette di coprire l'equivalente di una rete locale aziendale, ossia di una portata di un centinaio di metri. Permette di collegare...
La sicurezza delle reti senza fili Wi-Fi (802.11 o WiFi) VediUn'infrastruttura adatta La prima cosa da fare alla realizzazione di una rete senza fili è di posizionare intelligentemente i punti di accesso secondo la zona che si vuole coprire. Tuttavia non è raro che la zona effettivamente coperta sia molto...