Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse von PHP-Einzeldatei- und mehreren Datei-Uploads

Beispielanalyse von PHP-Einzeldatei- und mehreren Datei-Uploads

小云云
小云云Original
2017-12-14 09:37:591380Durchsuche

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!

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