Maison >développement back-end >tutoriel php >Comment télécharger correctement des fichiers en PHP et gérer les erreurs potentielles ?

Comment télécharger correctement des fichiers en PHP et gérer les erreurs potentielles ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 13:02:18618parcourir

How to Correctly Upload Files in PHP and Handle Potential Errors?

Télécharger un fichier à l'aide de PHP

Le téléchargement de fichiers vers un dossier spécifié est une tâche courante dans de nombreuses applications Web. Cette question explore un simple bloc de code PHP visant à réaliser cette tâche.

$folder = "upload/";
if (is_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'])) {   
    if (move_uploaded_file($HTTP_POST_FILES['filename']['tmp_name'], $folder . $HTTP_POST_FILES['filename']['name'])) {
         echo "File uploaded";
    } else {
         echo "File not moved to destination folder. Check permissions";
    };
} else {s
     echo "File is not uploaded";
}; 

Cependant, lors de l'exécution, une erreur se produit :

Notice: Undefined variable: HTTP_POST_FILES in C:\wamp\www\sdg\import\ips.php on line 3

Solution :

L'erreur est causée par l'utilisation de la variable obsolète $HTTP_POST_FILES. Utilisez plutôt $_FILES :

$folder = "upload/";
if (is_uploaded_file($_FILES['filename']['tmp_name'])) {   
    if (move_uploaded_file($_FILES['filename']['tmp_name'], $folder . $_FILES['filename']['name'])) {
         echo "File uploaded";
    } else {
         echo "File not moved to destination folder. Check permissions";
    };
} else {s
     echo "File is not uploaded";
}; 

Code PHP amélioré :

Le code PHP amélioré suivant offre des fonctionnalités améliorées, notamment la vérification du type et la validation de la taille du fichier :

$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
$allowedTypes = ['jpg', 'png'];

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        $msg = "Type is not allowed";
    } 
    // Check if file exists
    elseif (file_exists($target_file)) {
        $msg = "Sorry, file already exists.";
    } 
    // Check file size
    elseif ($_FILES["fileToUpload"]["size"] > 5000000) {
        $msg = "Sorry, your file is too large.";
    } 
    // Move file
    elseif (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        $msg = "The file " . basename($_FILES["fileToUpload"]["name"]) . " has been uploaded.";
    }
}
?>

Code HTML :

<form action="upload.php" method="post">

Ce code amélioré garantit que seuls les types de fichiers autorisés sont téléchargés, évite les noms de fichiers en double et limite la taille des fichiers pour éviter de surcharger votre serveur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn