Maison >développement back-end >tutoriel php >Pourquoi est-ce que j'obtiens l'erreur « Variable non définie : HTTP_POST_FILES » lors du téléchargement de fichiers en PHP ?

Pourquoi est-ce que j'obtiens l'erreur « Variable non définie : HTTP_POST_FILES » lors du téléchargement de fichiers en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 01:57:09342parcourir

Why Am I Getting the

Télécharger un fichier à l'aide de PHP : dépannage de l'erreur "Variable non définie : HTTP_POST_FILES"

Le téléchargement de fichiers sur un serveur à l'aide de PHP peut être un processus simple . Cependant, il est essentiel de corriger toute erreur pouvant survenir au cours du processus.

Problème :
Une erreur se produit lors de la tentative de téléchargement d'un fichier à l'aide de PHP : "Avis : Variable non définie : HTTP_POST_FILES".

Cause :
Le $HTTP_POST_FILES La variable fait référence au tableau global qui stocke les informations sur les fichiers téléchargés. Cependant, son utilisation est obsolète depuis PHP 4.1.0 et son utilisation n'est pas recommandée.

Solution :
Les versions PHP modernes s'attendent à une structure différente pour accéder aux données des fichiers téléchargés. Au lieu de $HTTP_POST_FILES, utilisez la méthodologie suivante :

$_FILES["file_name"]["key"]

Où :

  • file_name est le nom du champ de saisie dans lequel le fichier a été sélectionné.
  • La clé est l'aspect spécifique du fichier auquel vous accédez (par exemple, "nom", "type", "taille", "tmp_name").

Exemple de code :

Le code PHP amélioré suivant adhère aux meilleures pratiques en matière de téléchargement de fichiers :

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

if (isset($_POST["submit"])) {
    // Check file type
    if (!in_array($imageFileType, $allowedTypes)) {
        echo "Type is not allowed";
    }
    // Check if file already exists
    elseif (file_exists($target_file)) {
        echo "Sorry, file already exists.";
    }
    // Check file size
    elseif ($_FILES["filename"]["size"] > 5000000) {
        echo "Sorry, file is too large.";
    } else {
        // Upload file
        if (move_uploaded_file($_FILES["filename"]["tmp_name"], $target_file)) {
            echo "File uploaded successfully.";
        }
    }
}

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