Heim > Artikel > Backend-Entwicklung > Beispielanalyse von PHP-Einzeldatei- und mehreren Datei-Uploads
Dieser Artikel enthält hauptsächlich eine detaillierte Analyse des Codes und der Problemlösungen für das Hochladen einzelner Dateien und mehrerer Dateien. Ich hoffe, dass er allen helfen kann.
Wann ist $_FILES ein leeres Array?
Wenn der Enctype der Formularübermittlung nicht mit multipart/form-data in der Konfigurationsdatei php.ini übereinstimmt, ist file_uploads = Aus und die Größe der hochgeladenen Datei > die maximale Upload-Größe, die in der Konfigurationsdatei php.ini konfiguriert ist
Solange $_FILES ein leeres Array ist, können die oben genannten Probleme auftreten und müssen behoben werden!
Wenn Sie sofort auf die Schaltfläche „Hochladen“ klicken, ohne eine Datei auszuwählen, ist $_FILES ein Array mit Elementen. Jedes Attribut im Element ist eine leere Zeichenfolge und das Fehlerattribut ist 4
Einzelner Datei-Upload
$_FILES-Datenstruktur
array( 'filename' => array( 'name' => 'xxx.png', 'type' => 'image/png', 'size' => 2548863, 'tmp_name' => '/img/sdsdsd.png', 'error' => 0 ) )
Unabhängig davon, ob es sich um den Upload einer einzelnen Datei oder mehrerer Datei-Uploads handelt, gibt es 5 feste Attribute: Name / Größe / Typ / tmp_name / Fehler
Mehrere Datei-Uploads
Im Vergleich zum Einzeldatei-Upload ist die Verarbeitung mehrerer Dateien viel komplizierter. Zwei Formen des Multi-Datei-Uploads im Frontend
//name相同 <form method="post" enctype="multipart/form-data"> <input type="file" name="wt[]"/> <input type="file" name="wt[]"/> <input type="submit" value="提交"/> </form> //name不同(简单点) <form method="post" enctype="multipart/form-data"> <input type="file" name="wt"/> <input type="file" name="mmt"/> <input type="submit" value="提交"/> </form>
$_FILES im Backend Die entsprechenden Datenstrukturen sind unterschiedlich
//name相同 array (size=1) 'wt' => array (size=5) 'name' => array (size=2) 0 => string '新建文本文档 (2).txt' (length=26) 1 => string '新建文本文档.txt' (length=22) 'type' => array (size=2) 0 => string 'text/plain' (length=10) 1 => string 'text/plain' (length=10) 'tmp_name' => array (size=2) 0 => string 'C:\Windows\php1D64.tmp' (length=22) 1 => string 'C:\Windows\php1D65.tmp' (length=22) 'error' => array (size=2) 0 => int 0 1 => int 0 'size' => array (size=2) 0 => int 0 1 => int 1820 //name不同(简单点) array (size=2) 'wt' => array (size=5) 'name' => string '新建文本文档 (2).txt' (length=26) 'type' => string 'text/plain' (length=10) 'tmp_name' => string 'C:\Windows\php39C7.tmp' (length=22) 'error' => int 0 'size' => int 0 'mmt' => array (size=5) 'name' => string '新建文本文档.txt' (length=22) 'type' => string 'text/plain' (length=10) 'tmp_name' => string 'C:\Windows\php39D8.tmp' (length=22) 'error' => int 0 'size' => int 1820
Feldfehlerzweck
Wert: 1 Die hochgeladene Datei überschreitet den durch die Option upload_max_filesize in php.ini begrenzten Wert .
Wert: 2 Die Größe der hochgeladenen Datei überschreitet den durch die Option MAX_FILE_SIZE im HTML-Formular angegebenen Wert.
Wert: 3 Die Datei wurde nur teilweise hochgeladen.
Wert: 4 Es wurden keine Dateien hochgeladen. Wert: 5 Die hochgeladene Dateigröße beträgt 0.
Verwandte Empfehlungen:
Eine PHP-Datei-Upload-Klasse „sharing_php“-Instanz
PHP-Implementierung A Methode zum Hochladen mehrerer Dateien
Beispiel zur Erläuterung der Implementierung allgemeiner Datei-Upload-Klassen in PHP
Das obige ist der detaillierte Inhalt vonBeispielanalyse von PHP-Einzeldatei- und mehreren Datei-Uploads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!