Gli ultimi tutorial di sviluppo web
 

PHP 5 File Upload


Con PHP, è facile caricare i file sul server.

Tuttavia, con facilità arriva il pericolo, in modo da essere sempre attenti quando si permette il caricamento di file!


Configurare il "php.ini" File

In primo luogo, verificare che PHP è configurato per consentire il caricamento di file.

Nel vostro "php.ini" di file, la ricerca per la direttiva file_uploads, e impostarlo su On:

file_uploads = On

Creare il form HTML

Successivamente, creare un modulo HTML che consentono agli utenti di scegliere il file di immagine che vogliono caricare:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Alcune regole da seguire per il modulo HTML di cui sopra:

  • Assicurarsi che il modulo utilizza method = "post"
  • Il modulo deve inoltre il following attributo: enctype = "/ form-data multipart". Si specifica quale tipo di contenuto da utilizzare quando viene inviato il modulo

Senza i requisiti di cui sopra, il caricamento di file non funzionerà.

Altre cose da notare:

  • Il type="file" attributo del <input> tag mostra il campo di input come un controllo di file di selezione, con un "Browse" pulsante accanto al controllo di input

Il modulo di cui sopra invia i dati in un file chiamato "upload.php" , che creeremo prossimo.


Crea il caricamento del file di script PHP

Il "upload.php" file contiene il codice per il caricamento di un file:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

script PHP ha spiegato:

  • $ target_dir = "uploads/" - specifica la directory in cui il file sta per essere collocato
  • $ File_di_riferimento specifica il percorso del file da caricare
  • $ uploadOk = 1 non è ancora utilizzata (will be used later)
  • $ ImageFileType detiene l'estensione del file
  • Successivamente, verificare se il file di immagine è un'immagine reale o un'immagine falsa

Nota: è necessario creare una nuova directory chiamata "uploads" nella directory in cui "upload.php" risiede il file. I file caricati verranno salvati lì.


Controllare se il file esiste già

Ora possiamo aggiungere alcune restrizioni.

In primo luogo, si provvederà a controllare se il file esiste già nella "uploads" cartella. In tal caso, viene visualizzato un messaggio di errore, e $ uploadOk è impostato su 0:

// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}

Limite di dimensione del file

Il campo di immissione di file con il nostro modulo HTML sopra si chiama "fileToUpload" .

Ora, vogliamo controllare la dimensione del file. Se il file è più grande di 500 KB, viene visualizzato un messaggio di errore, e $ uploadOk è impostato su 0:

 // Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}

Tipo di limite di file

Il codice di seguito solo permette agli utenti di caricare JPG, JPEG, PNG e GIF. Tutti gli altri tipi di file dà un messaggio di errore, prima di $ uploadOk a 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}

Completa Carica file di script PHP

La completa "upload.php" file ora appare così:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

Completa PHP Filesystem di riferimento

Per un riferimento completo di funzioni di file system, vai alla nostra completa PHP Filesystem di riferimento .