English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP-Basis-Tutorial

PHP-Advanced-Tutorial

PHP & MySQL

PHP-Referenzhandbuch

PHP-Datei hochladen

In diesem Tutorial lernen Sie, wie Sie Dateien mit PHP auf einen Remote-Webserver hochladen.

Dateien mit PHP hochladen

In diesem Tutorial lernen wir, wie man Dateien mit einem einfachen HTML-Formular und PHP auf einem Remote-Server hochlädt. Sie können jede Art von Datei hochladen, z.B. Bilder, Videos, ZIP-Dateien, Microsoft Office-Dokumente, PDFs, ausführbare Dateien und viele andere Dateitypen.

第1Schritt: Erstellen Sie ein HTML-Formular zum Hochladen von Dateien

Nachfolgender Beispielcode erstellt ein einfaches HTML-Formular, das zum Hochladen von Dateien verwendet werden kann.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Datei Upload Formular</title>
</head>
    <form action="upload-manager.html" method="post" enctype="multipart/form-data">
        <h2>Upload Datei</h2>
        <label for="fileSelect">Dateiname:</label>
        <input type="file" name="photo" id="fileSelect">
        <input type="submit" name="submit" value="Upload">
        <p><strong>Hinweis:</strong>Es werden nur.jpg, .jpeg, .gif, .png-Formate zugelassen, die maximale Größe beträgt5 MB.</p>
    </form>
</html>

Hinweis:Abgesehen vonDateiauswahlFeld außerhalb, das die Upload-Formular auch verwenden mussHTTP postMethode und muss einen enctype="multipart/form-data"-Attribut. Dieses Attribut stellt sicher, dass die Formulardaten in mehrere MIME-Daten encoded werden, was für den Upload großer binärer Daten (z.B. Bilder, Audio, Video usw.) erforderlich ist.

第2Schritt: Verarbeiten Sie die hochgeladenen Dateien

Hier ist unser "Upload-Der vollständige Code des "manager.php"-Dateis. Er speichert die hochgeladenen Dateien dauerhaft im "upload"-Verzeichnis und führt einige grundlegende Sicherheitsprüfungen durch, wie z.B. Dateityp und Dateigröße, um sicherzustellen, dass der Benutzer die richtigen Dateitypen hochlädt und innerhalb der erlaubten Grenzen bleibt.

<?php
//Überprüfen Sie, ob das Formular bereits eingereicht wurde
if($_SERVER["REQUEST_METHOD"] == "POST"){
    // Überprüfen Sie, ob die Datei erfolgreich hochgeladen wurde
    if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
        $allowed = array("jpg" => "image"}/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];
    
        // Überprüfen Sie die Dateierweiterung
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Fehler: Bitte wählen Sie ein gültiges Dateiformat.");
    
        // Überprüfen Sie die Dateigröße-maximal5MB
        $maxsize = 5 * 1024 * 1024;
        if($filesize > $maxsize) die("Fehler: Die Dateigröße überschreitet die erlaubte Begrenzung.");
    
        // Überprüfen Sie den MIME-Typ der Datei
        if(in_array($filetype, $allowed)){
            // Überprüfen Sie, ob die Datei vor dem Hochladen existiert
            if(file_exists("upload/" . $filename)){
                echo $filename . " existiert bereits.";
            } else {
                move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename);
                echo "Ihre Datei wurde erfolgreich hochgeladen.";
            } 
        } else {
            echo "Fehler: Bei der Hochladung Ihrer Datei ist ein Problem aufgetreten. Bitte versuchen Sie es noch einmal."; 
        }
    } else {
        echo "Fehler: " . $_FILES["photo"]["error"];
    }
}
?>

Hinweis:Dieser Skript verhindert das Hochladen von Dateien, die denselben Namen wie bestehende Dateien im selben Verzeichnis haben. Möchten Sie dies jedoch zulassen, fügen Sie einfach einen zufälligen String oder einen Zeitstempel vor den Dateinamen hinzu, zum Beispiel $filename = time() . '_' . $_FILES["photo"]["name"];

Möglicherweise möchten Sie wissen, um was es sich bei diesem Code handelt. Na gut, lassen Sie uns jedes Teil dieses Beispielcodes nacheinander durchgehen, um diesen Prozess besser zu verstehen.

Erklärung zur Verwendung des Codes

Sobald das Formular eingereicht wird, können die Informationen zum hochgeladenen Datei über das PHP-Übergabearray $_FILES abgerufen werden. Zum Beispiel enthält unser Upload-Formular ein Dateiauswahlfeld mit dem Namen photo (d.h. name = "photo"), wenn ein Benutzer eine Datei über dieses Feld hochlädt, können wir ihre Details erhalten, wie z.B. Name, Typ, Größe, temporärer Name oder Fehler, die bei der Versuchshochladung über das Assoziationsarray $FILES["photo"] auftreten, wie folgt:

  • $_FILES["photo"]["name"] — Dieser Arraywert gibt den ursprünglichen Dateinamen an, einschließlich der Dateierweiterung. Dies schließt den Dateipfad nicht ein.

  • $_FILES["photo"]["type"] — Dieser Arraywert gibt den MIME-Typ der Datei an.

  • $_FILES["photo"]["size"] — Dieser Arraywert gibt die Dateigröße in Bytes an.

  • $_FILES["photo"]["tmp_name"] — Dieser Arraywert gibt den temporären Namen an, einschließlich des vollständigen Pfades, der dem Datei nach dem Upload zugewiesen wird.

  • $_FILES["photo"]["error"] — Dieser Arraywert gibt den Fehler oder den Statuscode im Zusammenhang mit der Dateiübertragung an, z.B. 0, wenn kein Fehler aufgetreten ist.

Das folgende Beispielcode zeigt, wie PHP-Code nur die Details der hochgeladenen Datei anzeigt und sie im temporären Verzeichnis auf dem Webserver speichert.

<?php
if($_FILES["photo"]["error"] > 0) {
    echo "Fehler: " . $_FILES["photo"]["error"] . "<br>";
} else {
    echo "Dateiname: " . $_FILES["photo"]["name"] . "<br>";
    echo "Dateityp: " . $_FILES["photo"]["type"] . "<br>";
    echo "Dateigröße: " . ($_FILES["photo"]["size"]; / 1024) . " KB<br>";
    echo "Gespeichert in: " . $_FILES["photo"]["tmp_name"];
}
?>

Hinweis:Nach dem erfolgreichen Upload wird die Datei automatisch im temporären Verzeichnis auf dem Server gespeichert. Um die Datei dauerhaft zu speichern, müssen Sie die Funktion move_uploaded_file() von PHP verwenden, um sie aus dem temporären Verzeichnis in den endgültigen Speicherort zu verschieben.