Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie mehrere Datei-Uploads in PHP

So implementieren Sie mehrere Datei-Uploads in PHP

小云云
小云云Original
2018-03-30 13:12:475167Durchsuche

In diesem Artikel erfahren Sie hauptsächlich, wie Sie mehrere Datei-Uploads in PHP implementieren. Ich hoffe, er kann Ihnen helfen.

PHP-Datei-Upload-Prozess
1. Klicken Sie auf die Schaltfläche „Senden“, und der Browser-Benutzer sendet die Formulardaten, die die hochgeladene Datei enthalten, an den PHP-Handler
2 form Ob die Größe der Daten die durch die Option post_max_size in der Konfigurationsdatei php.ini festgelegte Obergrenze überschreitet.
Wenn dieser Wert überschritten wird, kann der PHP-Handler keine Formulardaten abrufen. Zu diesem Zeitpunkt schlägt nicht nur das Hochladen der Datei fehl, sondern auch die im Formularsteuerelement ausgefüllten Daten können nicht übermittelt werden Die vordefinierten Variablen $_GET, $_POST und $_FILES des PHP-Handlers sind ein leeres Array.
Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 3 hochgeladen.
3. Überprüfen Sie, ob die Dateigröße im Formular die im ausgeblendeten Formularfeld MAX_FILE_SIZE festgelegte Obergrenze überschreitet.
Wenn der Wert überschritten wird, gibt der PHP-Präprozessor den Statuscode 2 zurück und der Datei-Upload schlägt fehl.
Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 4 hochgeladen.
(Wenn mehrere Dateien hochgeladen werden, wirkt sich der durch ein bestimmtes Datei-Upload-Feld verursachte Datei-Upload-Fehler nicht auf die Upload-Ergebnisse anderer Datei-Upload-Felder aus.)
4. Überprüfen Sie, ob die Dateien im Formular die Konfigurationsdatei php.ini überschreiten Obergrenze, die durch die Option upload_max_filesize festgelegt wird.
Wenn der Wert überschritten wird, gibt der PHP-Präprozessor den Statuscode 1 zurück und der Datei-Upload schlägt fehl.
Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 5 hochgeladen.
5. Um das Hochladen von Dateien in PHP zu implementieren, müssen Sie eine temporäre Datei erstellen, die eins zu eins der hochgeladenen Datei entspricht (Standarderweiterung ist tmp), in dem Verzeichnis, das durch die Option upload_tmp_dir in der Konfigurationsdatei php.ini definiert ist Nachdem der Upload erfolgreich war, verschwindet die temporäre Datei. Zu diesem Zeitpunkt gibt der PHP-Präprozessor den Statuscode 0 zurück.
Manchmal werden jedoch aus stillschweigenden Schreibgründen (z. B. die Einstellung der Option max_execution_time ist zu klein oder die Netzwerkgeschwindigkeit ist usw.) nach dem Hochladen einiger Dateien die verbleibenden Dateien nicht mehr hochgeladen, was dazu führt, dass der Datei-Upload fehlschlägt Gleichzeitig gibt der PHP-Präprozessor den Statuscode 3
zurück Bei bestandener Prüfung wird die Datei zur Prüfung in Schritt 6 hochgeladen.
6. Der wichtigste Schritt zum Hochladen einer Datei besteht darin, die temporäre Datei auf dem Webserver oder Dateiserver zu speichern, bevor die temporäre Datei verschwindet. Zwei von PHP bereitgestellte Funktionen: die Funktion is_uploaded_file() und die Funktion move_uploaded_file() können dabei helfen, diesen Arbeitsschritt abzuschließen.


Mehrere Datei-Upload-Anfragen. Beachten Sie, dass die Der Inhalt der mit demselben Namen gespeicherten Dateien wird in der folgenden Form im Array platziert. Es handelt sich um fünf Arrays, die entsprechend den fünf Parametern der Datei separat gespeichert werden, nicht um drei Arrays. Wenn Sie also count($_FILES[‘$myPicture’]) direkt verwenden, lautet die Antwort 5.

array (size=5)  'name' => 
    array (size=3)      0 => string '1.txt' (length=5)      1 => string '2.txt' (length=5)      2 => string '3.txt' (length=5)  'type' => 
    array (size=3)      0 => string 'text/plain' (length=10)      1 => string 'text/plain' (length=10)      2 => string 'text/plain' (length=10)  'tmp_name' => 
    array (size=3)      0 => string 'D:\wamp64\tmp\phpC5E8.tmp' (length=25)      1 => string 'D:\wamp64\tmp\phpC5E9.tmp' (length=25)      2 => string 'D:\wamp64\tmp\phpC5EA.tmp' (length=25)  'error' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
  'size' => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0

index.php-Datei

<form action="fileSystem.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="submit" value="提交">
</form>

DateiSystemdatei

<?php
    if (empty($_POST)) {        exit("提交的表单数据超过post_max_size的配置");
    }    $arr = $_FILES[&#39;myPicture&#39;];    $file =array();    for ($i=0; $i < count($arr[&#39;name&#39;]); $i++) { 
        $file[$i][&#39;name&#39;] = $arr[&#39;name&#39;][$i];        $file[$i][&#39;type&#39;] = $arr[&#39;type&#39;][$i];        $file[$i][&#39;tmp_name&#39;] = $arr[&#39;tmp_name&#39;][$i];        $file[$i][&#39;error&#39;] = $arr[&#39;error&#39;][$i];        $file[$i][&#39;size&#39;] = $arr[&#39;size&#39;][$i];
    }    for ($i=0; $i < count($file); $i++) { 
        switch ($file[$i][&#39;error&#39;]) {            case 0:          
                $fileName = $file[$i][&#39;name&#39;];                $fileTemp = $file[$i][&#39;tmp_name&#39;];                $destination = "uploads/" . $file[$i][&#39;name&#39;];
                move_uploaded_file($fileTemp, $destination);                echo "上传成功";                break;            case 1:                echo "上传附件超过php.ini中的upload_max_filesize选项的限制";                break;            case 2:                echo "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";                break;            case 3:                echo "附件只有部分被上传";                break;            case 4:                echo "没有选择上传附件";                break;
        } 
    }   
?>

🎜>1 Klicken Sie auf die Schaltfläche „Senden“ und die Der Browser-Benutzer sendet die Formulardaten, die die hochgeladene Datei enthalten, an den PHP-Handler

2. Der Webserver und der PHP-Präprozessor ermitteln zunächst, ob die Größe der Formulardaten die Größe der php.ini-Konfigurationsdatei überschreitet. Die

post_max_size
Option legt den oberen Grenzwert fest.
Wenn dieser Wert überschritten wird, kann der PHP-Handler keine Formulardaten abrufen. Zu diesem Zeitpunkt schlägt nicht nur das Hochladen der Datei fehl, sondern auch die im Formularsteuerelement ausgefüllten Daten können nicht übermittelt werden Die vordefinierten Variablen $_GET, $_POST und $_FILES des PHP-Handlers sind ein leeres Array. Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 3 hochgeladen. 3. Überprüfen Sie, ob die Dateigröße im Formular die im ausgeblendeten Formularfeld
MAX_FILE_SIZE
festgelegte Obergrenze überschreitet.
Wenn der Wert überschritten wird, gibt der PHP-Präprozessor den Statuscode 2 zurück und der Datei-Upload schlägt fehl. Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 4 hochgeladen. (Wenn mehrere Dateien hochgeladen werden müssen, wirkt sich der durch ein bestimmtes Datei-Upload-Feld verursachte Datei-Upload-Fehler nicht auf die Upload-Ergebnisse anderer Datei-Upload-Felder aus.)
4. Überprüfen Sie, ob die Dateien im Formular die php.ini-Konfiguration überschreiten Datei Die durch die Option
upload_max_filesize
festgelegte Obergrenze.
Wenn der Wert überschritten wird, gibt der PHP-Präprozessor den Statuscode 1 zurück und der Datei-Upload schlägt fehl. Wenn das Limit nicht überschritten wird, wird die Datei zur Überprüfung in Schritt 5 hochgeladen. 5. Um das Hochladen von Dateien in PHP zu implementieren, müssen Sie eine temporäre Datei erstellen, die eins zu eins der hochgeladenen Datei entspricht (die Standarderweiterung ist tmp), in dem Verzeichnis, das durch die Option upload_tmp_dir in der php.ini-Konfiguration definiert ist Nachdem der Upload erfolgreich war, verschwindet die temporäre Datei. Zu diesem Zeitpunkt gibt der PHP-Präprozessor den Statuscode 0 zurück.
Manchmal werden jedoch aus stillschweigenden Schreibgründen (z. B. die Einstellung der Option max_execution_time ist zu klein oder die Netzwerkgeschwindigkeit ist usw.) nach dem Hochladen einiger Dateien die verbleibenden Dateien nicht mehr hochgeladen, was dazu führt, dass der Datei-Upload fehlschlägt Gleichzeitig gibt der PHP-Präprozessor den Statuscode 3
zurück Bei bestandener Prüfung wird die Datei zur Prüfung in Schritt 6 hochgeladen.
6. Der wichtigste Schritt zum Hochladen einer Datei besteht darin, die temporäre Datei auf dem Webserver oder Dateiserver zu speichern, bevor die temporäre Datei verschwindet. Zwei von PHP bereitgestellte Funktionen: die Funktion
is_uploaded_file()
und die Funktion
move_uploaded_file() können dabei helfen, diesen Schritt abzuschließen


Beim Hochladen mehrerer Dateien ist zu beachten, dass der Inhalt von Dateien, die unter demselben Namen gespeichert sind, in der folgenden Form im Array platziert wird. Es handelt sich um fünf Arrays, die entsprechend den fünf Parametern der Datei separat gespeichert werden, nicht um drei Arrays. Wenn Sie also count($_FILES[‘$myPicture’]) direkt verwenden, lautet die Antwort 5.

array (size=5)  &#39;name&#39; => 
    array (size=3)      0 => string &#39;1.txt&#39; (length=5)      1 => string &#39;2.txt&#39; (length=5)      2 => string &#39;3.txt&#39; (length=5)  &#39;type&#39; => 
    array (size=3)      0 => string &#39;text/plain&#39; (length=10)      1 => string &#39;text/plain&#39; (length=10)      2 => string &#39;text/plain&#39; (length=10)  &#39;tmp_name&#39; => 
    array (size=3)      0 => string &#39;D:\wamp64\tmp\phpC5E8.tmp&#39; (length=25)      1 => string &#39;D:\wamp64\tmp\phpC5E9.tmp&#39; (length=25)      2 => string &#39;D:\wamp64\tmp\phpC5EA.tmp&#39; (length=25)  &#39;error&#39; => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0
  &#39;size&#39; => 
    array (size=3)      0 => int 0
      1 => int 0
      2 => int 0

index.php-Datei

<form action="fileSystem.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="file" name="myPicture[]" size= "25" maxlength="100"><br>
    <input type="submit" value="提交">
</form>

DateiSystemdatei

<?php
    if (empty($_POST)) {        exit("提交的表单数据超过post_max_size的配置");
    }    $arr = $_FILES[&#39;myPicture&#39;];    $file =array();    for ($i=0; $i < count($arr[&#39;name&#39;]); $i++) { 
        $file[$i][&#39;name&#39;] = $arr[&#39;name&#39;][$i];        $file[$i][&#39;type&#39;] = $arr[&#39;type&#39;][$i];        $file[$i][&#39;tmp_name&#39;] = $arr[&#39;tmp_name&#39;][$i];        $file[$i][&#39;error&#39;] = $arr[&#39;error&#39;][$i];        $file[$i][&#39;size&#39;] = $arr[&#39;size&#39;][$i];
    }    for ($i=0; $i < count($file); $i++) { 
        switch ($file[$i][&#39;error&#39;]) {            case 0:          
                $fileName = $file[$i][&#39;name&#39;];                $fileTemp = $file[$i][&#39;tmp_name&#39;];                $destination = "uploads/" . $file[$i][&#39;name&#39;];
                move_uploaded_file($fileTemp, $destination);                echo "上传成功";                break;            case 1:                echo "上传附件超过php.ini中的upload_max_filesize选项的限制";                break;            case 2:                echo "上传附件的大小超过了form表单MAX_FILE_SIZE选项指定的值";                break;            case 3:                echo "附件只有部分被上传";                break;            case 4:                echo "没有选择上传附件";                break;
        } 
    }   
?>

Verwandte Empfehlungen:

php3.2 implementiert mehrere Datei-Uploads

Beispielanalyse einer Methode für PHP zur Implementierung mehrerer Datei-Uploads

Beispielanalyse einer einzelnen PHP-Datei und mehrere Dateien hochladen

Das obige ist der detaillierte Inhalt vonSo implementieren Sie mehrere Datei-Uploads in PHP. 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