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
Patricia ArquetteOriginal
2024-12-09 13:02:18564Durchsuche

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";
}; 

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!

Stellungnahme:
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