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
Libérer: 2024-12-10 01:57:09
original
347 Les gens l'ont consulté

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

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

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