Heim >Backend-Entwicklung >PHP-Tutorial >Wie lade ich Dateien in PHP korrekt hoch und gehe mit möglichen Fehlern um?
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"; };
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
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"; };
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."; } } ?>
HTML-Code:
<form action="upload.php" method="post">
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!