我有一个简单的html表单元素来上传文件:
NA
哪个接受多个文件。但是,当我计算了多少时,它会报告一个,即使没有。如果我添加它正确报告的文件,那么如果我添加两个,它会报告两个。
这就是我的计算方法:
<input id="item_image" type="file" name="item_image[]" multiple/>
这是为什么?有更好的计算方法吗?
答案 0 :(得分:1)
在进行多文件上传时,PHP是愚蠢的。单个文件上传获得结构
$_FILES['name_of_file_input'] = array(
'name' => 'kittens.jpg',
'type' => 'image/jpeg'
etc...
多重上传时:
$_FILES['name_of_file_input'] = array(
'name' => array(
0 => 'kittens.jpg'
1 => 'catnip.exe'
'type' => array(
0 => 'image/jpeg',
1 => 'much/fun'
即使没有上传文件,您仍然可以获得name
,type
等子数组,因为您在输入名称中指定了[]
。
拥有<input type="file">
然后不上传文件STILL会生成$ _FILES结构,['error']
为UPLOAD_ERR_NO_FILE
:
$_FILES['name_of_file_input'] = array(
'name' => array(''),
'type' => array(''),
'error' => array(4)
etc..
答案 1 :(得分:0)
即使没有上传文件,也会出现$_FILES
(由于文件输入字段),以显示文件上传状态。
除error
以外,大多数值都是空白的:
Array
(
[name] => Array
(
[0] =>
)
[type] => Array
(
[0] =>
)
[tmp_name] => Array
(
[0] =>
)
[error] => Array
(
[0] => 4
)
[size] => Array
(
[0] => 0
)
)
更好的检查是使用error
键(4
,在上面的输出中表示UPLOAD_ERR_NO_FILE
):
if(UPLOAD_ERR_OK == $_FILES['item_image']['error'][0])){
// File uploaded!
} elseif(UPLOAD_ERR_NO_FILE == $_FILES['item_image']['error'][0]){
// No file uploaded!
} else {
// Some error ocurred!
}