PHP文件上传计数为1时应为0

时间:2016-07-20 19:42:48

标签: php

我有一个简单的html表单元素来上传文件:

NA

哪个接受多个文件。但是,当我计算了多少时,它会报告一个,即使没有。如果我添加它正确报告的文件,那么如果我添加两个,它会报告两个。

这就是我的计算方法:

<input id="item_image" type="file" name="item_image[]" multiple/>

这是为什么?有更好的计算方法吗?

2 个答案:

答案 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'

即使没有上传文件,您仍然可以获得nametype等子数组,因为您在输入名称中指定了[]

拥有<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!
}

请参阅Error Messages Explained