English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial lernen Sie, wie Sie Dateien mit PHP auf einen Remote-Webserver 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.
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.
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.
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.