PHP single file and multi file upload instances

  • 2021-08-28 19:40:03
  • OfStack

When is $_ FILES an empty array?

In the php. ini configuration file when form submission enctype is not equal to multipart/form-data, file_uploads = file size uploaded by Off > Maximum upload size configured in php. ini configuration file

As long as $_FILES is an empty array, the above problems may occur and must be fixed!

If you click "Upload" immediately without selecting any file, $_FILES will be an array with elements, each attribute in the element is an empty string, and the error attribute is 4

Single file upload

$_ FILES data structure


array(
  'filename' => array(
    'name' => 'xxx.png',
    'type' => 'image/png',
    'size' => 2548863,
    'tmp_name' => '/img/sdsdsd.png',
    'error' => 0
  )
)

Whether it's 单文件 Or 多文件上传 Will have 5 fixed attributes: name/size/type/tmp_name/error

Multiple file upload

Compared with single file upload, multi-file upload is much more complicated to handle than the two front-end multi-file upload forms


//name Same 
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt[]"/>
  <input type="file" name="wt[]"/>
  <input type="submit" value=" Submit "/>
</form>

//name Different (simpler) 
<form method="post" enctype="multipart/form-data">
  <input type="file" name="wt"/>
  <input type="file" name="mmt"/>
  <input type="submit" value=" Submit "/>
</form>

Back-end $_FILES The corresponding data structure is different


//name Same 
array (size=1)
 'wt' => 
  array (size=5)
   'name' => 
    array (size=2)
     0 => string ' New Text Document  (2).txt' (length=26)
     1 => string ' New Text Document .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 Different (simpler) 
array (size=2)
 'wt' => 
  array (size=5)
   'name' => string ' New Text Document  (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 ' New Text Document .txt' (length=22)
   'type' => string 'text/plain' (length=10)
   'tmp_name' => string 'C:\Windows\php39D8.tmp' (length=22)
   'error' => int 0
   'size' => int 1820

Field Error Purpose

Value: 1 The uploaded file exceeds the limit of the upload_max_filesize option in php. ini.

Value: 2 The size of the uploaded file exceeds the value specified by the MAX_FILE_SIZE option in the HTML form.

Value: 3 Only part of the file is uploaded.

Value: 4 No files were uploaded. Value: 5 Upload file size is 0.


Related articles: