Heim > Backend-Entwicklung > PHP-Tutorial > Wie lade ich Dateien in PHP korrekt hoch und gehe mit möglichen Fehlern um?

Wie lade ich Dateien in PHP korrekt hoch und gehe mit möglichen Fehlern um?

Patricia Arquette
Freigeben: 2024-12-09 13:02:18
Original
577 Leute haben es durchsucht

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

Eine Datei mit PHP hochladen

Das Hochladen von Dateien in einen bestimmten Ordner ist eine häufige Aufgabe in vielen Webanwendungen. Diese Frage untersucht einen einfachen PHP-Codeblock, der diese Aufgabe erfüllen soll.

$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";
}; 
Nach dem Login kopieren

Bei der Ausführung tritt jedoch ein Fehler auf:

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

Lösung:

Der Fehler wird durch die Verwendung der veralteten Variablen $HTTP_POST_FILES verursacht. Verwenden Sie stattdessen $_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";
}; 
Nach dem Login kopieren

Erweiterter PHP-Code:

Der folgende erweiterte PHP-Code bietet verbesserte Funktionen, einschließlich Typprüfung und Dateigrößenvalidierung:

$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.";
    }
}
?>
Nach dem Login kopieren

HTML-Code:

<form action="upload.php" method="post">
Nach dem Login kopieren

Dieser verbesserte Code stellt sicher, dass nur zulässige Dateitypen hochgeladen werden, verhindert doppelte Dateinamen und begrenzt die Dateigröße, um eine Überlastung Ihres Servers zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien in PHP korrekt hoch und gehe mit möglichen Fehlern um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage