Home  >  Article  >  Backend Development  >  PHP single file and multiple file upload examples explained

PHP single file and multiple file upload examples explained

jacklove
jackloveOriginal
2018-07-05 18:02:581650browse

This article gives you a detailed analysis of the code and problem solutions for single file upload and multi-file upload in PHP. Let’s learn and refer to it together.

$_FILES When is an empty array?

When the form submission enctype is not equal to multipart/form-data in the php.ini configuration file, file_uploads = Off and the uploaded file size > the maximum upload size configured in the php.ini configuration file

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

If you click the "Upload Button" 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 is

Single file or Multiple file upload, there will be 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 process. The two forms of multi-file upload on the front end

//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>


The back-end

$_FILES corresponds to different data structures

//name相同
array (size=1)
 &#39;wt&#39; => 
  array (size=5)
   &#39;name&#39; => 
    array (size=2)
     0 => string &#39;新建文本文档 (2).txt&#39; (length=26)
     1 => string &#39;新建文本文档.txt&#39; (length=22)
   &#39;type&#39; => 
    array (size=2)
     0 => string &#39;text/plain&#39; (length=10)
     1 => string &#39;text/plain&#39; (length=10)
   &#39;tmp_name&#39; => 
    array (size=2)
     0 => string &#39;C:\Windows\php1D64.tmp&#39; (length=22)
     1 => string &#39;C:\Windows\php1D65.tmp&#39; (length=22)
   &#39;error&#39; => 
    array (size=2)
     0 => int 0
     1 => int 0
   &#39;size&#39; => 
    array (size=2)
     0 => int 0
     1 => int 1820

//name不同(简单点)
array (size=2)
 &#39;wt&#39; => 
  array (size=5)
   &#39;name&#39; => string &#39;新建文本文档 (2).txt&#39; (length=26)
   &#39;type&#39; => string &#39;text/plain&#39; (length=10)
   &#39;tmp_name&#39; => string &#39;C:\Windows\php39C7.tmp&#39; (length=22)
   &#39;error&#39; => int 0
   &#39;size&#39; => int 0
 &#39;mmt&#39; => 
  array (size=5)
   &#39;name&#39; => string &#39;新建文本文档.txt&#39; (length=22)
   &#39;type&#39; => string &#39;text/plain&#39; (length=10)
   &#39;tmp_name&#39; => string &#39;C:\Windows\php39D8.tmp&#39; (length=22)
   &#39;error&#39; => int 0
   &#39;size&#39; => int 1820

Field Error purpose

Value: 1 The uploaded file exceeds the value limited by 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 The file was only partially uploaded.

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

Principle analysis of PHP multiplayer module development

Explanation of using XHProf to find PHP performance bottlenecks

Related summary of custom template directives in the Laravel framework

The above is the detailed content of PHP single file and multiple file upload examples explained. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn