Über PHP können Dateien auf den Server hochgeladen werden.
Die Beispiele in diesem Kapitel werden im Rahmen des Testprojekts abgeschlossen und die Verzeichnisstruktur ist:
test|-----upload # Verzeichnis für Datei-Upload|-----form.html # Formulardatei|-----upload_file.php # PHP-Upload-Code
Es ist sehr nützlich, Benutzern das Hochladen von Dateien aus einem Formular zu ermöglichen.
Schauen Sie sich das folgende HTML-Formular zum Hochladen von Dateien an:
<html><head><meta charset="utf-8"><title>Coder-Tutorial (codercto.com)</title></head><body><form action="upload_file.php" method=" post " enctype="multipart/form-data"> <label for="file">Dateiname:</label> <input type="file" name="file" id="file"><br> <input type ="senden" name="senden" value="Senden"></form></body></html>
Speichern Sie den obigen Code in der Datei form.html.
Nachfolgend sind einige Hinweise zum obigen HTML-Formular aufgeführt:
Das enctype- Attribut des <form> -Tags gibt an, welcher Inhaltstyp beim Absenden des Formulars verwendet werden soll. Wenn ein Formular Binärdaten erfordert, wie z. B. Dateiinhalte, verwenden Sie „ multipart/form-data “.
Das Attribut type="file" des <input> -Tags gibt an, dass die Eingabe als Datei verarbeitet werden soll. Wenn Sie beispielsweise eine Vorschau in einem Browser anzeigen, wird neben dem Eingabefeld eine Schaltfläche zum Durchsuchen angezeigt.
Hinweis: Benutzern das Hochladen von Dateien zu erlauben, stellt ein großes Sicherheitsrisiko dar. Bitte erlauben Sie nur vertrauenswürdigen Benutzern, Datei-Upload-Vorgänge durchzuführen.
Die Datei „upload_file.php“ enthält Code zum Hochladen von Dateien:
<?phpif ($_FILES["file"]["error"] > 0){ echo "Error:" . $_FILES["file"]["error"] "<br>";}else{ echo " Dateiname hochladen: " . $_FILES["file"]["name"] . "<br>"; echo "Dateityp: " . $_FILES["file"]["type"] . "<br>"; echo "Dateigröße: " ($_FILES["file"]["size"] / 1024) "Der Ort, an dem die Datei vorübergehend gespeichert ist: " $_FILES[ "file"]["tmp_name"];}?>
Mithilfe des globalen PHP-Arrays $_FILES können Sie Dateien vom Client-Computer auf einen Remote-Server hochladen.
Der erste Parameter ist der Eingabename des Formulars und der zweite Index kann „name“, „type“, „size“, „tmp_name“ oder „error“ sein. Wie unten gezeigt:
$_FILES["file"]["name"] – der Name der hochgeladenen Datei
$_FILES["file"]["type"] – Typ der hochgeladenen Datei
$_FILES["file"]["size"] – Größe der hochgeladenen Datei in Bytes
$_FILES["file"]["tmp_name"] – Der Name der temporären Kopie der auf dem Server gespeicherten Datei
$_FILES["file"]["error"] – Fehlercode, der durch das Hochladen der Datei verursacht wurde
Dies ist eine sehr einfache Möglichkeit, Dateien hochzuladen. Aus Sicherheitsgründen sollten Sie Einschränkungen hinzufügen, wer Dateien hochladen darf.
In diesem Skript fügen wir Einschränkungen für Datei-Uploads hinzu. Benutzer können nur .gif-, .jpeg-, .jpg- und .png-Dateien hochladen, und die Dateigröße muss weniger als 200 kB betragen:
<?php// Zulässige Suffixe für hochgeladene Bilder $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explosion(".", $_FILES["file"][" name "]);$extension = end($temp); // Dateisuffix abrufen if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($_FILES["file"]["type"] == "image/jpg")||. "file"]["type"] == "image/pjpeg")||. ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // Weniger als 200 kb&& in_array($extension, $ erlaubtExts)){ if ($_FILES["file"]["error"] > 0) { echo "Error:: " . $_FILES["file"]["error"] "<br>"; else { echo "Upload file name: " "Dateityp: " . $_FILES["file"]["type"] . "<br>"; echo "Dateigröße: " ($_FILES["file"]["size"] . " kB<br>"; echo "Der Ort, an dem die Datei vorübergehend gespeichert ist: " .}else{ echo "Ungültiges Dateiformat";}?>
Das obige Beispiel erstellt eine temporäre Kopie der hochgeladenen Datei im temporären PHP-Ordner des Servers.
Diese temporäre Kopie verschwindet, wenn das Skript endet. Um die hochgeladene Datei zu speichern, müssen wir sie an einen anderen Ort kopieren:
<?php// Zulässige Suffixe für hochgeladene Bilder $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = explosion(".", $_FILES["file"][" name "]);echo $_FILES["file"]["size"];$extension = end($temp); // Holen Sie sich das Dateisuffix, wenn ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "image/jpeg")|| ($ _FILES["file"]["type"] == "image/jpg")||. ($_FILES["file"]["type"] == "image/pjpeg")|| ($_FILES["file"]["type"] == "image/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($ _FILES["file"]["size"] < 204800) // Weniger als 200 KB&& in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "Error: " . $_FILES["file"]["error"] } else { echo "Dateiname hochladen : " . $_FILES["file"]["name"] . "<br>"; echo "Dateityp: " . $_FILES["file"]["type"] . "<br>"; echo "Dateigröße: " . ($_FILES["file"]["size"] / 1024) " Der Ort, an dem die Datei vorübergehend gespeichert ist: " . ["tmp_name"] . "<br>"; // Bestimmen Sie, ob die Datei im Upload-Verzeichnis unter dem aktuellen Verzeichnis vorhanden ist. // Wenn kein Upload-Verzeichnis vorhanden ist, müssen Sie es erstellen (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] " Die Datei existiert bereits. "; } else { // Wenn die Datei nicht im Upload-Verzeichnis vorhanden ist, laden Sie die Datei in das Upload-Verzeichnis hoch move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "name"]); echo "Die Datei ist gespeichert in: " . "upload/" . $_FILES["file"]["name"]; } }}else{ echo „Ungültiges Dateiformat“;}?>
Das obige Skript prüft, ob die Datei bereits existiert. Wenn sie nicht existiert, kopiert es die Datei in ein Verzeichnis mit dem Namen „upload“.