Home>Guide>Come fare l’upload di file con PHP

Come fare l’upload di file con PHP



L’upload di file con PHP è un’operazione abbastanza semplice da eseguire, ma ci sono alcune cose da tenere a mente per garantire che tutto vada liscio e in sicurezza.
In questo articolo, ti mostrerò come eseguire l’upload di file con PHP in modo facile e veloce.

  • Leggi l'articolo, ti bastano solo 1 minuto, 11 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Operazioni preliminari: i permessi

Prima di tutto, è importante assicurarsi di avere i permessi corretti per l’upload di file sul tuo server.
In genere, questo significa avere accesso alla cartella in cui desideri salvare i file caricati, verificando di anche di avere i permessi in scrittura su questa cartella, in modo da poter effettivamente salvare i file caricati.

È possibile verificare se si ha l’accesso in scrittura ad una cartella sul server in modo molto semplice; per farlo è sufficiente creare un file di prova all’interno della cartella in questione. Se la creazione del file riesce, significa che hai i permessi di scrittura per la cartella.

Semplice no?


La creazione del form

Bene, una volta che hai i permessi in ordine, puoi iniziare a lavorare con il tuo codice PHP per l’upload di file.
Iniziamo creando un form HTML per l’upload del file, con un campo di input file ed un bottone di submit.

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <button type="submit">Upload File</button>
</form>

Notare l’attributo enctype del form, impostato come “multipart/form-data” proprio perché stiamo inviando file attraverso il form.


Gestire l'upload

Fatto? Ora possiamo creare un file PHP chiamato “upload.php” per gestire l’upload effettivo.
Avrai notato che il nome del file corrisponde alla action impostata nel form. Vuol dire che una volta premuto il tasto “Upload file”, i dati del form verranno trasmessi a questa pagina, che si occuperà di gestirli.

Nel nostro file PHP, possiamo utilizzare la funzione move_uploaded_file() per spostare il file caricato dalla cartella temporanea del server alla cartella di destinazione desiderata. Ecco un esempio di come potrebbe essere il tuo codice PHP per l’upload di file:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename( $_FILES["file"]["name"] );
if ( move_uploaded_file( $_FILES["file"]["tmp_name"], $target_file ) ) {
    echo "Il file ". basename( $_FILES["file"]["name"] ). " è stato caricato con successo.";
} else {
    echo "Spiacente, si è verificato un errore durante l'upload del file.";
}

Nell’esempio, stiamo dichiarando una cartella chiamata “uploads” come cartella di destinazione per i file caricati e utilizzando la funzione basename() per ottenere il nome del file da caricare.

Utilizziamo quindi la funzione move_uploaded_file() per spostare il file caricato dalla cartella temporanea del server alla cartella di destinazione specificata, in questo caso “uploads/”.

Infine, abbiamo un controllo per verificare se l’upload è andato a buon fine e stampiamo un messaggio di successo o di errore.

Ed il gioco è fatto!


Approfondimenti

Mi raccomando, non fermarti in superficie! Per approfondire l’argomento, ti consiglio di dare un’occhiata alla documentazione ufficiale della funzione move_uploaded_file():


Ma questo è solo l’inizio. Ci sono alcune precauzioni da prendere per garantire che i file caricati siano sicuri e che il tuo server non sia vulnerabile a possibili attacchi.

Ad esempio, si dovrebbe sempre effettuare il controllo di tipi di file validi e dimensioni del file, per evitare di accettare file potenzialmente pericolosi o troppo grandi.

Potresti utilizzare la funzione pathinfo() per estrarre l’estensione del file, quindi fare un controllo con una lista di estensioni valide:

<?php
$file_ext = pathinfo('path/to/file.jpg', PATHINFO_EXTENSION);
$valid_exts = array( "jpg", "jpeg", "gif", "png" );
if ( in_array( $file_ext, $valid_exts ) ) {
    // File valido!
} else {
    // File non valido!
}

Potresti invece controllare la dimensione di un file utilizzando la funzione filesize(), che accetta come parametro il percorso del file e restituisce la dimensione del file in bytes:

<?php
$file = 'path/to/file.jpg';
$size = filesize( $file );
if ( $size > 4096 ) {
    // File non valido!
    echo "La dimensione del file $file è $size bytes";
} else {
    // File valido!
}

Inoltre, si dovrebbe sempre utilizzare il meccanismo di sicurezza corretto come controllare i permessi del file, prima di salvare il file su server.

In generale, l’upload di file con PHP è una funzionalità comune che può essere implementata facilmente, ma è importante considerare la sicurezza e prendere le precauzioni necessarie per proteggere il tuo server e i tuoi utenti.
Con un po’ di pianificazione e attenzione ai dettagli, sarai in grado di eseguire l’upload di file con PHP senza problemi e senza preoccupazioni.

Ma questo è un esercizio che lascio a te e che potrai approfondire e migliorare con l’esperienza



Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Come utilizzare i modelli di oggetti JavaScript


Come programmare ad oggetti utilizzando i modelli? Scopri come fare con JavaScript.

Come creare un negozio online ibrido B2C/B2B con WooCommerce B2B

Come creare un negozio online ibrido B2C/B2B con WooCommerce B2B


Scopri come configurare WooCommerce B2B per sfruttare le potenzialità del tuo ecommerce con un negozio online che soddisfi le esigenze dei clienti B2C e B2B.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)