Derniers tutoriels de développement web
 

PHP 5 File Upload


Avec PHP, il est facile de télécharger des fichiers sur le serveur.

Cependant, avec la facilité est un danger, il faut donc toujours être prudent lorsque vous permettant le téléchargement de fichiers!


Configurer le "php.ini" Fichier

Tout d'abord, assurez-vous que PHP est configuré pour permettre le téléchargement de fichiers.

Dans votre "php.ini" fichier, recherchez la directive file_uploads, et le mettre sur Activé:

file_uploads = On

Créer le formulaire HTML

Ensuite, créez un formulaire HTML qui permettent aux utilisateurs de choisir le fichier image qu'ils veulent télécharger:

<!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>

Quelques règles à suivre pour le formulaire HTML ci-dessus:

  • Assurez-vous que le formulaire utilise method = « post »
  • Le formulaire doit également following l' attribut: enctype = "multipart / form-data". Il précise que le type de contenu à utiliser lors de l'envoi du formulaire

Sans les exigences ci-dessus, le téléchargement de fichiers ne fonctionnera pas.

Autres choses à noter:

  • Le type="file" attribut de la <input> balise indique le champ de saisie comme un contrôle de fichiers sélectionnez, avec un "Browse" bouton à côté du contrôle d'entrée

Le formulaire envoie ci - dessus données dans un fichier appelé "upload.php" , que nous créons.


Créer le téléchargement de fichiers PHP Script

Le "upload.php" fichier contient le code pour télécharger un fichier:

<?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;
    }
}
?>

PHP script expliqué:

  • $ target_dir = "uploads/" - indique le répertoire dans lequel le fichier va être placé
  • target_file de $ spécifie le chemin du fichier à télécharger
  • $ uploadOk = 1 est pas encore utilisé (will be used later)
  • $ ImageFileType détient l'extension de fichier du fichier
  • Ensuite, vérifiez si le fichier d'image est une image réelle ou une fausse image

Remarque: Vous devrez créer un nouveau répertoire appelé "uploads" dans le répertoire où "upload.php" fichier se trouve. Les fichiers téléchargés seront enregistrés il.


Vérifiez si le fichier déjà EXISTE

Maintenant, nous pouvons ajouter quelques restrictions.

Tout d' abord, nous allons vérifier si le fichier existe déjà dans le "uploads" dossier. Dans le cas contraire, un message d'erreur est affiché et $ uploadOk est réglé sur 0:

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

Limiter la taille du fichier

Le champ d'entrée de fichier dans notre formulaire HTML ci - dessus est nommé "fileToUpload" .

Maintenant, nous voulons vérifier la taille du fichier. Si le fichier est plus grand que 500kb, un message d'erreur est affiché et $ uploadOk est réglé sur 0:

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

Limite Type de fichier

Le code ci-dessous ne permet aux utilisateurs de télécharger JPG, JPEG, PNG, GIF et fichiers. Tous les autres types de fichiers donne un message d'erreur avant de $ 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;
}

Télécharger fichier complet PHP Script

Le complet "upload.php" fichier ressemble maintenant à ceci:

<?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.";
    }
}
?>

Remplissez PHP Référence Filesystem

Pour une référence complète des fonctions du système de fichiers, consultez notre complet PHP Référence Filesystem .