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
Libérer: 2024-12-09 13:02:18
original
577 Les gens l'ont consulté

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";
}; 
Copier après la connexion

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
Copier après la connexion

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";
}; 
Copier après la connexion

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.";
    }
}
?>
Copier après la connexion

Code HTML :

<form action="upload.php" method="post">
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal