Eine Datei an den PHP-Server senden. Dateien mit PHP hochladen. Ein HTML-Formular zum Hochladen einer Datei hinzufügen

Ich freue mich, Sie auf den Seiten meiner Website zu sehen. Heute sprechen wir über die Implementierung des Hochladens von Dateien auf den Server. Das Thema ist sehr interessant, weil... Diese Frage interessiert viele Anfänger.

Hochladen von Dateien auf den Server mit PHP wird Ihnen die Arbeit beim Ausfüllen einer Fotogalerie oder beim Entwerfen einer Website-Seite mit einem Editor (z. B TinyMCE). Sie können je nach Ihren Aufgaben auch beliebige Dateitypen auf den Server hochladen.

Um eine Datei auf den Server hochzuladen, müssen Sie ein Formular zum Hochladen von Dateien erstellen. Im Prinzip unterscheidet sich dieses Formular kaum von einem regulären Formular mit Textfeldern, abgesehen davon Typ es wird kein geben Text, A Datei(da wir Dateien hochladen) und das Attribut wird dem Formular selbst hinzugefügt enctype="multipart/form-data". Geben Sie ein Bestimmt die Art der Codierung, die der Browser auf Formularparameter anwendet.

PHP – Dateien selbst auf den Server hochladen

Demo: Dateien auf den Server hochladen

Laden Sie Ihre Fotos auf den Server hoch

Wir haben ein Formular zum Hochladen von Dateien erstellt. Es ist an der Zeit, einen einfachen Handler zum Hochladen von Dateien auf den Server zu schreiben. Stellen wir gleich fest, dass wir nur Grafikdateien mit dem Typ laden jpeg, png, GIF. Sobald wir die Dateitypen festgelegt haben, die auf den Server hochgeladen werden sollen, müssen wir auf dem Server selbst einen Ordner erstellen, in dem wir unsere Dateien ablegen. In meinem Beispiel ist dies der Bildordner, in den wir unsere Dateien legen.

„Es sind keine Fehler aufgetreten, die Datei wurde erfolgreich auf den Server hochgeladen.“, 1 => „Die Größe der empfangenen Datei hat die maximal zulässige Größe überschritten, die durch die Anweisung upload_max_filesize der Konfigurationsdatei php.ini angegeben ist.“, 2 => „Die Größe der hochgeladenen Datei hat den im HTML-Formular angegebenen Wert MAX_FILE_SIZE überschritten.“, 3 => „Die heruntergeladene Datei wurde nur teilweise empfangen.“, 4 => „Die Datei wurde nicht heruntergeladen.“, 6 => „ Fehlender temporärer Ordner. Hinzugefügt in PHP 4.3.10 und PHP 5.0.3 "); //Dateitypen zum Hochladen definieren $fileTypes = array("jpg" => "image/jpeg", "png" => "image/png", "gif" => "image/gif"); //Wenn die Schaltfläche zum Hochladen gedrückt wird if(isset($_POST["upload"])) ( //Überprüfen Sie, ob die Daten leer sind oder nicht if(!empty($_FILES)) ( //Auf Fehler prüfen if($ _FILES["files" ]["error"] > 0) $err = $errUpload[$_FILES["files"]["error"]]; //Überprüfen Sie den Typ der hochzuladenden Datei if(!in_array($_FILES ["Dateien"][" Typ"], $fileTypes)) $err = "Dieser Dateityp ". $_FILES["files"]["type"] ." nicht zum Hochladen geeignet!"; //Wenn es keine Fehler gibt, dann lade die Datei hoch if(empty($err)) ( $type = pathinfo($_FILES["files"]["name"]); $name = $uploadDir ." /". uniqid("files_") .".". $type["extension"]; move_uploaded_file($_FILES["files"]["tmp_name"],$name); //POST-Parameter zurücksetzen header("Standort: http://". $_SERVER["HTTP_HOST"] ."/less/uploads/uploads.php?name=". $name); exit; ) else echo implode("
", $err); ) ) //Meldung über erfolgreichen Datei-Upload auf den Server if(isset($_GET["name"])) echo "

Datei ". htmlentities($_GET["name"]) ." erfolgreich geladen!

"; //Bilder aus dem Verzeichnis anzeigen $imgDir = array_values(array_diff(scandir($uploadDir), array("..", "."))); for($i = 0; $i< count($imgDir); $i++) { if($i % 2 == 0) echo "
"."\n"; echo " "."\n"; ) echo "

"."\n"; echo " http://". $_SERVER["HTTP_HOST"] ." "; ?>

Nachdem wir den Code geschrieben und überprüft haben, ob alles funktioniert, kann es für Anfänger beim Herunterladen großer Dateien zu Problemen kommen. Dazu müssen Sie die Einstellungen anpassen PHP.INI

; Maximale Ausführungszeit für jedes Skript in Sekunden max_execution_time = 3000 ; Die maximale Zeit, die jedes Skript für das Parsen einer Datenanforderung aufwenden kann max_input_time = 400 ; Maximale Speichermenge, die das Skript belegen kann (8 MB) Memory_limit = 500M; Die maximale Größe der POST-Daten, die PHP akzeptiert. post_max_size = 500M ; Die maximal zulässige Größe für hochgeladene Dateien. upload_max_filesize = 200 MB

Um eine oder mehrere Dateien auf den Server hochladen zu können, wird im Formular ein spezielles Feld verwendet. In den Browsern Firefox, IE und Opera wird ein solches Element als Textfeld angezeigt, neben dem sich eine Schaltfläche mit der Bezeichnung „Durchsuchen…“ befindet (Abb. 1). In Safari und Chrome ist nur die Schaltfläche „Datei auswählen“ verfügbar (Abb. 2).

Reis. 1. Ansicht des Feldes zum Hochladen einer Datei in Firefox

Wenn Sie auf die Schaltfläche klicken, öffnet sich ein Dateiauswahlfenster, in dem Sie angeben können, welche Datei der Benutzer verwenden möchte.

Die Syntax für das Datei-Upload-Feld lautet wie folgt.

Die Attribute sind in der Tabelle aufgeführt. 1.

Bevor Sie dieses Feld verwenden, müssen Sie im Formular Folgendes tun:

  1. Stellen Sie die Datensendemethode POST ein (method="post" );
  2. Setzen Sie das enctype-Attribut auf multipart/form-data .

Das Datei-Upload-Formular wird in Beispiel 1 demonstriert.

Beispiel 1: Erstellen eines Feldes zum Senden einer Datei

HTML5 IE Cr Op Sa Fx

Senden einer Datei an den Server

Obwohl Sie die Breite eines Felds mithilfe des Größenattributs festlegen können, hat die Breite eigentlich keinen Einfluss auf die Ausgabe des Formulars. In den Browsern Safari und Chrome hat dieses Attribut überhaupt keine Auswirkung.

Wichtiger ist das Mehrfachattribut; es ermöglicht Ihnen, sich bei der Auswahl nicht auf eine Datei zu beschränken, sondern mehrere davon gleichzeitig zum gleichzeitigen Laden anzugeben.

Wenn das Attribut „accept“ nicht angegeben ist, werden Dateien jeglichen Typs hinzugefügt und geladen. Durch das Vorhandensein von Accept können Sie die Dateiauswahl einschränken, was besonders wichtig ist, wenn Sie nur ein Bild oder Video hochladen müssen. Der Wert ist , mehrere Werte werden durch ein Komma getrennt. Sie können auch die folgenden Schlüsselwörter verwenden:

  • audio/* – Musikdateien beliebiger Art auswählen;
  • image/* – Grafikdateien;
  • video/* – Videodateien.

In der Tabelle Abbildung 2 zeigt einige gültige Werte für das Accept-Attribut.

Die Verwendung zusätzlicher Attribute wird in Beispiel 2 gezeigt.

HTML5 IE 10+ Cr Op Sa Fx

Laden Sie Ihre Fotos auf den Server hoch

Nicht alle Browser unterstützen die neuen Attribute. IE ignoriert „multiple“ und „accept“ vollständig, Safari unterstützt „accept“ nicht und Firefox funktioniert nicht mit MIME-Typen, sondern nur mit Schlüsselwörtern. Daher wird im obigen Beispiel der Wert speziell für Firefox auf image/*,image/jpeg gesetzt. Beachten Sie auch einen seltsamen Fehler in Opera, der keine Leerzeichen nach Kommas in „accept“ zulässt.

Das Ergebnis des Beispiels ist in Abb. dargestellt. 3. Bitte beachten Sie, dass sich das Erscheinungsbild des Feldes aufgrund der Anwesenheit mehrerer Personen geringfügig verändert hat.

Letzte Aktualisierung: 01.11.2015

Um eine Datei auf den Server hochzuladen, müssen wir ein Formular mit dem Parameter enctype="multipart/form-data" und dem Array $_FILES verwenden. Erstellen wir also eine Datei upload.php mit folgendem Inhalt:

Hochladen einer Datei

Datei wählen:

Hier wird ein Formular mit dem Attribut enctype="multipart/form-data" definiert. Das Formular enthält ein spezielles Feld zur Auswahl einer Datei.

Alle hochgeladenen Dateien landen in einem assoziativen Array $_FILES. Um festzustellen, ob überhaupt heruntergeladene Dateien vorhanden sind, können Sie das if-Konstrukt verwenden: if ($_FILES)

Das $_FILES-Array ist zweidimensional. Wir können eine Reihe von Dateien hochladen und jede hochgeladene Datei kann mit einem Schlüssel abgerufen werden, der dem Wert des Namensattributs entspricht.

Da das Element zum Hochladen einer Datei im Formular name="filename" hat, können wir diese Datei mit dem Ausdruck $_FILES["filename"] abrufen.

Jedes Dateiobjekt hat seine eigenen Parameter, die wir erhalten können:

    $_FILES["file"]["name"]: Dateiname

    $_FILES["file"]["type"]: Dateiinhaltstyp, z. B. Bild/JPEG

    $_FILES["file"]["size"]: Dateigröße in Bytes

    $_FILES["file"]["tmp_name"]: Name der temporären Datei, die auf dem Server gespeichert ist

    $_FILES["file"]["error"]: Fehlercode beim Laden

Wir können den Download auch auf Fehler überprüfen. Wenn kein Fehler vorliegt, enthält das Feld $_FILES["filename"]["error"] den Wert UPLOAD_ERR_OK .

Wenn Sie eine Datei auf den Server hochladen, wird sie zunächst an einen temporären Speicherort hochgeladen, von wo aus sie dann mithilfe der Funktion move_uploaded_file() in das Serververzeichnis verschoben wird.

Die Funktion move_uploaded_file() benötigt zwei Parameter: den Pfad zur hochgeladenen temporären Datei und den Pfad, in dem die hochgeladene Datei abgelegt werden soll.

Download-Einschränkungen und -Einstellungen

Standardmäßig ist die Größe der hochgeladenen Dateien auf 2 MB begrenzt. Sie können diesen Indikator jedoch in der Konfigurationsdatei konfigurieren. Ändern wir diese Zahl beispielsweise auf 10 MB. Suchen Sie dazu in der Datei php.ini die folgende Zeile:

Upload_max_filesize = 2M

Ändern wir es in

Upload_max_filesize = 10 MB

Wir können auch einen Ordner für temporär heruntergeladene Dateien einrichten. Tun Sie dies in der Datei php.ini Suchen wir die folgende Zeile:

;upload_tmp_dir =

Ändern wir es in

Upload_tmp_dir = „C:/php/upload“

Außerdem müssen wir im PHP-Verzeichnis einen Upload-Ordner erstellen.

Mehrfachladung

Lassen Sie uns das Skript ändern upload.php damit es das mehrfache Laden unterstützt:

$error) ( if ($error == UPLOAD_ERR_OK) ( $tmp_name = $_FILES["uploads"]["tmp_name"][$key]; $name = $_FILES["uploads"]["name"][$ Schlüssel]; move_uploaded_file($tmp_name, "$name"); ) ) ) ?>

Hochladen einer Datei




Jedes Dateiauswahlfeld verfügt über ein name="uploads"-Attribut, sodass der Server die Menge der hochgeladenen Dateien als ein einzelnes Array behandelt.

Dann gehen wir mithilfe einer foreach-Schleife alle Dateien durch und speichern sie im Website-Verzeichnis.

Bei fast jedem Projekt steht der Entwickler vor der Notwendigkeit, Dateien auf den Server hochzuladen. Fotos, Bilder, Dokumente, Archive und vieles mehr können über die Weboberfläche (über einen Browser) auf den Server hochgeladen werden.


Http://localhost/index.php?name=myname&page=10

definiert eine GET-Anfrage an die Seite index.php. In diesem Fall werden dem Skript die Parameter „name“ und „page“ mit den Werten „myname“ bzw. „10“ übergeben. Wie Sie sehen, besteht die Anfrage aus „Name=Wert“-Paaren, die durch „&“ verbunden sind. Die Anfrage wird durch ein Fragezeichen „?“ von der Seitenadresse getrennt.

Für die Übertragung großer Datenmengen ist GET jedoch nicht geeignet. Hierfür gibt es eine POST-Methode. Bei dieser Methode werden Daten für den Benutzer verborgen übertragen und die Seitenadresse bleibt unverändert. Theoretisch können Sie mit der POST-Methode große Datenblöcke übertragen, die meisten Anbieter legen jedoch ein festes Limit von 5 bis 10 Megabyte fest.

Um den Datei-Download durchzuführen, ist es notwendig, dem Benutzer das entsprechende Formular zur Verfügung zu stellen. Das Dateieingabe-Tag wird zum Hochladen von Dateien verwendet.

Wählen Sie die Datei zum Herunterladen aus:

Der Benutzer wählt die gewünschte Datei aus, klickt auf die Schaltfläche „Senden!“, woraufhin der Browser sendet angegebene Datei an den Server. Sobald die Datei heruntergeladen ist, wird „receiver.php“ gestartet und alle im Formular übermittelten Daten stehen ihr automatisch zur Verfügung.

Die Liste der heruntergeladenen Dateien wird im globalen Array $_FILES gespeichert. Dies ist ein assoziatives Array, in dem jedes Element eine Beschreibung einer der Dateien enthält. Schauen wir uns ein Beispiel an:

3145728) ( $filesize = ($filesize != 0)? sprintf("(%.2f MB)" , $filesize / 1024): ""; die("Fehler: Die Größe der angehängten Datei ". $filesize. " ist zu groß (3 MB)."); ) else ( $filename = $_FILES["file"]["name"]; $filepath = $_FILES["file"]["tmp_name"]; $filetype = $_FILES[" file"]["type"]; if($this->filetype == null || $this->filetype == "") $this->filetype = "unknown/unknown"; ) ) ) echo „Datei erfolgreich geladen:“. $Dateiname; ?>

Alle heruntergeladenen Dateien werden vom Server in einem temporären Verzeichnis gespeichert und nach Abschluss des Skripts automatisch gelöscht. Wenn Sie eine Datei auf dem Server speichern müssen, müssen Sie sie in eines der Site-Verzeichnisse verschieben. Dafür gibt es eine spezielle Funktion. move_uploaded_file(). Es wird normalerweise in Verbindung mit der Funktion verwendet is_uploaded_file(), wodurch Sie feststellen können, ob die Datei über das Formular hochgeladen wurde. Zum Beispiel:

Informationen zu jeder heruntergeladenen Datei werden im Skript als Elemente des $_FILES-Arrays dargestellt. Der Name des Elements wird durch das Namensattribut des Formular-Tags bestimmt. In unserem Fall ist das Namensattribut gleich „ufile“, was bedeutet, dass Daten zu dieser Datei im Element $_FILES["ufile"] gespeichert werden.

Jedes $_FILES-Element ist auch ein Array, das fünf Elemente mit festen Namen enthält:

Die Größe der heruntergeladenen Dateien kann von Anbieter zu Anbieter erheblich variieren. Einige Administratoren verbieten das Hochladen von Dateien gänzlich. In diesem Fall kann die Datei trotzdem heruntergeladen werden, der Server löscht sie und teilt dem Skript mit, dass die Datei vorhanden war, aber bereits gelöscht wurde.

27.12.16 19K

Heute möchte ich Ihnen verschiedene Situationen im Zusammenhang mit dem Hochladen von Dateien auf den Server mithilfe von PHP-Skripten erläutern. Ich werde versuchen, Beispiele sowohl für den einfachsten Datei-Upload als auch für den Mehrfach-Upload mit PHP zum Verschieben hochgeladener Dateien zu geben.

Zum Hochladen von Dateien auf den Server. Zunächst müssen Sie ein HTML-Formular mit einem Dateieingabefeld erstellen. Hängen Sie dann ein PHP-Skript an, das die Datei in das angegebene Verzeichnis verschiebt. Um eine Datei mithilfe eines PHP-Skripts auf den Server hochzuladen, gehen Sie folgendermaßen vor:

  1. Erstellen Sie ein einfaches HTML-Formular: Sie benötigen ein einfaches Formular mit der Möglichkeit, eine Datei anzugeben. Es befindet sich in der Datei basic.php:

Grundlegender Datei-Upload

Grundlegender Datei-Upload


Der obige Code ist zum Erstellen des Formulars erforderlich. Sobald der Benutzer eine Datei auswählt und auf die Schaltfläche „Hochladen“ klickt, sendet das Formular Daten mithilfe der POST-Methode auf derselben Seite, da die Datei „basic.php“ als Handler angegeben ist:

Wichtig: Vergessen Sie nicht, hinzuzufügen enctype=“multipart/form-data“ in das Tag ein

.

  1. Wir erstellen ein PHP-Skript zur Verarbeitung des Download-Formulars. In PHP sind alle Informationen zu hochgeladenen Dateien in der globalen Variablen $_FILES enthalten. Das heißt, mit $_FILES können Sie überprüfen, ob eine Datei heruntergeladen wurde. Wenn die Datei hochgeladen wurde, können Sie sie mit der PHP-Funktion move_uploaded_file in das gewünschte Verzeichnis verschieben:

Der obige Code prüft, ob der Benutzer die Datei heruntergeladen hat. Wenn die Datei heruntergeladen wird, verschieben wir die Datei in das angegebene Verzeichnis. Im obigen Skript verschieben wir die Datei in denselben Ordner, in dem sich die Datei basic.php befindet.

Unten finden Sie die vollständige PHP-Version des Beispiels zum Verschieben einer hochgeladenen Datei:

Grundlegender Datei-Upload

Grundlegender Datei-Upload


Bitte testen Sie dieses Beispiel einer mit PHP hochgeladenen Datei nicht auf dem Server. Es ist nicht sicherheitskonform und wurde speziell erstellt, um zu demonstrieren, wie Dateien mit PHP hochgeladen werden.

Frage: Warum ist das obige Skript unsicher?
Antwort: Mit dem obigen Skript können Sie jede Art von Datei auf den Server hochladen. Das heißt, wenn Sie das Skript in dieser Form auf einem „Live“-Server verwenden, kann jeder Hacker seine eigenen PHP-Skripte hochladen und Ihre Website und Ihren Server hacken.

Etwas später werden wir ausführlicher auf den Schutz des Skripts zum Hochladen von Dateien auf den Server eingehen.

Was ist $_FILES?

$_FILES ist eine globale Variable in PHP wie $_POST oder $_GET . Es handelt sich um ein assoziatives Array, das mithilfe der HTTP-POST-Methode Informationen über die hochgeladene Datei enthält.

Das heißt, wenn wir print_r($_FILES) für das obige Skript ausführen, erhalten wir die folgenden Informationen:

Array ( => Array ( => upload-file-php.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

Das heißt, für jedes Feld Im Array wird ein Element erstellt. Wenn Sie erstellen , dann wird auch der Elementname in test geändert. Zum Beispiel:

Array ( => Array ( => upload-file-php.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

Nun werden für jede Eingabedatei, die mit „Move Uploaded File PHP“ verschoben wurde, fünf Elemente erstellt ( Name, Typ, tmp_name, Fehler, Größe). Schauen wir uns diese Elemente genauer an:

  1. Name: enthält den Namen der vom Benutzer hochgeladenen Datei. Wenn Sie die abc.txt-Datei in den Browser laden, heißt das Namenselement abc.txt.
  2. Typ: der Typ der hochgeladenen Datei, genauer gesagt Mime-Typ. Bei einer JPG-Datei hat dieses Element den Wert image/jpeg . Wenn Sie Text laden, erhält das Element den Wert text/plain . Für verschiedene Typen Auch der MIME-Typ der Dateien wird unterschiedlich sein. Nachfolgend sind die häufigsten Mime-Typen aufgeführt:
  • JPEG: Bild/JPEG ;
  • PNG: image/png ;
  • Text: text/plain ;
  • Wort: application/msword.
  1. tmp_name: Temporärer Speicherort für die heruntergeladene Datei. Dieser Pfad kann in der in der Datei php.ini angegebenen Variable upload_tmp_dir geändert werden.
  1. Fehler: Fehlerinformationen. Enthält die Art des Fehlers, der während des Downloadvorgangs aufgetreten ist. Beispielsweise, wenn die Dateigröße das Maximum überschreitet oder keine Datei zum Herunterladen angegeben wurde. Für jeden auftretenden Fehler gibt es einen numerischen Wert und eine Konstante. Nachfolgend finden Sie eine vollständige Liste der Fehler, die auftreten können Beispiel für das Verschieben einer hochgeladenen PHP-Datei:
  • UPLOAD_ERR_OK (Wert 0). Zeigt an, dass die Datei erfolgreich und ohne Fehler heruntergeladen wurde.
  • UPLOAD_ERR_INI_SIZE (Wert 1). Die Dateigröße überschreitet die in der Variable upload_max_filesize in der Datei php.ini angegebene Größe.
  • UPLOAD_ERR_FORM_SIZE (Wert 2). Die Dateigröße überschreitet den in der Formularvariablen MAX_FILE_SIZE festgelegten Wert.
  • UPLOAD_ERR_PARTIAL (Wert 3). Die Datei wurde nicht vollständig heruntergeladen;
  • UPLOAD_ERR_NO_FILE (Wert 4). Es gibt keine Datei zum Herunterladen;
  • UPLOAD_ERR_NO_TMP_DIR (Wert 6). Das angegebene Verzeichnis für die temporäre Speicherung existiert nicht;
  • UPLOAD_ERR_CANT_WRITE (Wert 7). Die Datei kann nicht auf die Festplatte geschrieben werden.
  1. Größe: Größe der hochgeladenen Datei in Bytes.

Was ist move_uploaded_file?

move_uploaded_file ist eine Funktion, die eine hochgeladene Datei von einem temporären Verzeichnis in einen Zielordner verschiebt. Vor dem Verschieben von move_uploaded_file prüft PHP, ob die in der Post-HTTP-Methode angegebene Datei hochgeladen wurde.

Wenn die Datei erfolgreich verschoben wurde, erhalten Sie eine Antwort „Wahr“ oder „Falsch“. Im ersten Beispiel haben wir die folgende Codezeile verwendet:

move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir)

Jetzt machen wir es schön und zeigen die Informationen an:

if(move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir))( echo "File Uploaded" ) else( echo "File Not uploaded" )

Ändern der Größenbeschränkung für Upload-Dateien

Jedes Datei-Upload-Formular muss eine Größenbeschränkung haben, andernfalls laden Benutzer am Ende umfangreiche Dateien hoch. Es gibt zwei Möglichkeiten, ein Limit für das Verschieben hochgeladener Dateien in PHP festzulegen:

  • Die PHP.ini-Datei verfügt über eine spezielle Variable upload_max_filesize, die für die maximale Größe der hochgeladenen Dateien verantwortlich ist. Das Folgende ist eine Zeile aus php.ini, die die Größe der hochgeladenen Dateien auf 20 MB begrenzt: upload_max_filesize = 20M.
  • Wenn die heruntergeladene Datei hat größere Größe, dann erhält der Benutzer einen UPLOAD_ERR_INI_SIZE-Fehler oder den Wert „2“ in der Variablen $_FILES. Es ist wichtig zu beachten, dass der Wert der Variable upload_max_filesize den Wert der in php.ini angegebenen Variablen post_max_size nicht überschreiten sollte;
  • Sie können die Größe der hochgeladenen Datei begrenzen, indem Sie im Upload-Formular ein verstecktes Eingabeelement namens UPLOAD_ERR_INI_SIZE platzieren. Sie können es so machen: .

Wenn Sie die Dateigröße stark erhöhen müssen, vergessen Sie nicht, die Ausführungszeit von PHP-Skripten zu ändern.

So sichern Sie das PHP-Datei-Upload-Skript

Jetzt wissen Sie, wie Sie die Größe hochgeladener Dateien begrenzen und die Dateitypen identifizieren, die Benutzer hochladen. Es ist an der Zeit, sich um die Sicherheit unseres Beispiels für eine hochgeladene PHP-Umzugsdatei zu kümmern.

Beispielsweise verhindern wir, dass Benutzer JPEG-Dateien hochladen, die größer als 1 MB sind. Legen Sie den entsprechenden Grenzwert in der Variablen upload_max_filesize in der Datei php.ini fest. Nachfolgend finden Sie eine verbesserte Version des Skripts:

Sicherer Datei-Upload

Sicherer Datei-Upload


Mehrfach-Upload von Dateien mithilfe eines PHP-Skripts

Mit $_FILES und move_uploaded_file PHP können Sie mehrere Dateien gleichzeitig hochladen. Im Folgenden erzähle ich Ihnen zwei Möglichkeiten zum Mehrfach-Upload von Dateien mithilfe eines PHP-Skripts:

  1. Verwendung unterschiedlicher Eingabenamen.
  2. Verwendung desselben Eingabenamens, aber Verwendung eines Arrays.

1. Verwendung unterschiedlicher Eingabenamen:

Sie können mehrere Dateien gleichzeitig hochladen, indem Sie mehrere Eingabeelemente verwenden. Wie bereits erwähnt, werden, wenn wir mehrere Eingabeelemente erstellen, mehrere Hauptelemente in $_FILES erstellt. Zum Beispiel für das folgende Formular:

$_FILES präsentiert ein Array mit folgendem Inhalt:

Array ( => Array ( => 20141002_094257.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpoBWrBZ => 0 => 2669096) => Array ( => 20141002_094247.jpg => image/jpeg = > /Applications/XAMPP/xamppfiles/temp/phpjwUmVZ => 0 => 2207657))

Das folgende Beispiel für eine hochgeladene PHP-Umzugsdatei sollte unter Berücksichtigung der Tatsache geschrieben werden, dass ein Element für einen Avatar (Bild) und das andere für das Hochladen eines Lebenslaufs dient ( Datei im .doc-Format):

Hochladen mehrerer Dateien

Hochladen mehrerer Dateien



2. Wir verwenden ein Eingabefeld, verwenden jedoch ein Array:

Wie bei anderen Eingabetypen können wir zum Verschieben der hochgeladenen Datei PHP ein Array mit dem in PHP angegebenen Eingabetyp verwenden. Also:

Das heißt, für den obigen HTML-Code stellt $_FILES Daten mit der folgenden Struktur bereit:

Array ( => Array ( => Array ( => upload-file-php.jpg => variable-scope-php.jpg => magic-constants.jpg) => Array ( => image/jpeg => image/jpeg => image/jpeg) => Array ( => /Applications/XAMPP/xamppfiles/temp/phpML5kOy => /Applications/XAMPP/xamppfiles/temp/phpNZbuw7 => /Applications/XAMPP/xamppfiles/temp/phpO8VFAk) => Array ( => 0 => 0 => 0) => Array ( => 6887 => 8036 => 9967)))

Laden Sie den im Artikel verwendeten Code herunter

Diese Veröffentlichung ist eine Übersetzung des Artikels „Datei-Upload mit PHP-Skript“, erstellt vom freundlichen Projektteam

Gut schlecht