【问题标题】:How can I know a number of uploaded files with PHP?我如何知道使用 PHP 上传的文件的数量?
【发布时间】:2010-12-06 15:19:39
【问题描述】:

我有一个表格,里面有几个

input type="file"

标签。我如何在服务器端知道用户上传的文件数量。他可以上传3个文件,或者可能是5个文件,1个甚至什么都没有。我需要知道用户上传了多少文件。

【问题讨论】:

    标签: php upload


    【解决方案1】:

    您可以在包含上传文件信息的$_FILES 数组上使用countsizeof

     echo count($_FILES);
    

    更新(基于 cmets):

    你可以这样做:

    $counter = 0;
    foreach($_FILES as $value){
      if (strlen($value['name'])){
        $counter++;
      }
    }
    
    echo $counter; // get files count
    

    【讨论】:

    • 它每次都显示“1” :) 即使没有上传文件。
    • @user337085:不应该这样,你是在用 POST 数据刷新页面吗?您可以使用print_r($_FILES) 进行测试:)
    • 没关系,但是会显示输入字段的总数。例如,如果我有 3 个字段并且只上传了两个文件,它会显示 3。并说第三个文件没有上传。
    • print_r 输出为: ( [Picture1] => Array ( [name] => 16.jpg [type] => image/jpeg [tmp_name] => Z:\tmp\php92A5.tmp [ error] => 0 [size] => 29175) [Picture2] => Array ([name] => 2010-10-02_135854.jpg [type] => image/jpeg [tmp_name] => Z:\tmp\php92A6 .tmp [错误] => 0 [大小] => 1035911) [图片3] => 数组 ([名称] => [类型] => [tmp_name] => [错误] => 4 [大小] => 0) )
    • 这意味着第一个文件是好的,第二个是好的,第三个没有上传。并且 count($_FILES) 返回 3。但正确的值是 2。
    【解决方案2】:

    如果您输入的上传标签名称为file1file2,那么

    if($_FILES['file1']['size'] > 0)
        echo "User uploaded some file for the input named file1"
    

    现在对于许多文件(查看您的输出),运行一个 foreach 循环,如下所示:-

    $cnt=0;
    foreach($_FILES as $eachFile)
    {
         if($eachFile['size'] > 0)
            $cnt++;
    }
    echo $cnt." files uploaded";
    

    我不确定为什么How can I know a number of uploaded files with PHP? 中的类似答案被否决了?对于“0”?

    【讨论】:

    • $_FILES 具有基于名称的文件,并且任何具有来自相同命名输入或数组 [] 语法的多个文件的输入都不会计入您的代码中。
    【解决方案3】:

    $_FILES 是一个全局文件数组,用于存储上传的文件。

    【讨论】:

      【解决方案4】:

      表格:

      <form enctype="multipart/form-data" ...>
      <input type="file" name="image[]" multiple>
      

      脚本:

      $c = sizeof($_FILES['image']['name']);
      

      【讨论】:

      • 稍微解释一下您的脚本以改进答案。不鼓励仅使用脚本回答。
      • $_FILES 是一个数组,所以我使用 sizeof 来计算数组的元素。
      猜你喜欢
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      相关资源
      最近更新 更多