PHP单文件和多文件上传实例
$_FILES何时为空数组?
表单提交enctype不等于multipart/form-data的时候php.ini配置文件中,file_uploads=Off上传的文件大小>php.ini配置文件中所配置的最大上传大小时
只要出现$_FILES为空数组,就可能出现以上的问题,必须修复!
如果未选择任何文件就马上点击“上传按钮”,$_FILES将会是一个有元素的数组,元素中的每个属性都是空字符串,error属性为4
单文件上传
$_FILES数据结构
array( 'filename'=>array( 'name'=>'xxx.png', 'type'=>'image/png', 'size'=>2548863, 'tmp_name'=>'/img/sdsdsd.png', 'error'=>0 ) )
无论是单文件还是多文件上传,都会有5个固定属性:name/size/type/tmp_name/error
多文件上传
相比单文件上传,多文件上传处理起来要复杂多了前端的两种多文件上传形式
//name相同//name不同(简单点)
后端的$_FILES对应的数据结构不同
//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=>int0 1=>int0 'size'=> array(size=2) 0=>int0 1=>int1820 //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'=>int0 'size'=>int0 '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'=>int0 'size'=>int1820
字段Error用途
值:1上传的文件超过了php.ini中upload_max_filesize选项限制的值。
值:2上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值。
值:3文件只有部分被上传。
值:4没有文件被上传。值:5上传文件大小为0.