我如何知道使用PHP上传的文件数量?

我如何知道使用PHP上传的文件数量?,php,upload,Php,Upload,我有一张有几张的表格 input type="file" 标签。如何在服务器端知道用户上载的文件数量。他可以上传3个文件,也可以是5个文件,1个甚至什么都没有。我需要知道用户上载了多少文件。您可以在包含上载文件信息的$\u files数组上使用count或sizeof: echo count($_FILES); 更新(基于评论): 您可以这样做: $counter = 0; foreach($_FILES as $value){ if (strlen($value['name']))

我有一张有几张的表格

input type="file"

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

您可以在包含上载文件信息的
$\u files
数组上使用
count
sizeof

 echo count($_FILES);

更新(基于评论): 您可以这样做:

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

echo $counter; // get files count

您可以在包含上载文件信息的
$\u文件
数组上使用
计数
大小

 echo count($_FILES);

更新(基于评论): 您可以这样做:

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

echo $counter; // get files count

$\u FILES
是存储上载文件的全局文件数组

$\u FILES
是存储上载文件的全局文件数组

如果您的输入上载标签的名称类似于
file1
file2
,那么

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";

我不知道为什么类似的答案会被否决?对于“0”?

如果您的输入上载标记的名称类似于
file1
file2
,则

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";
我不知道为什么类似的答案会被否决?对于“0”?

表单:

<form enctype="multipart/form-data" ...>
<input type="file" name="image[]" multiple>
$c = sizeof($_FILES['image']['name']);
表格:

<form enctype="multipart/form-data" ...>
<input type="file" name="image[]" multiple>
$c = sizeof($_FILES['image']['name']);

即使没有上传任何文件,每次都显示“1:”。@user337085:不应该是这样,您是否正在用POST数据刷新页面?您可以使用
print\r($\u文件)
:)进行测试。这没问题,但它会显示输入字段的总数。例如,如果我有3个字段,并且只上载了两个文件,它将显示3。打印输出是:([Picture1]=>Array([name]=>16.jpg[type]=>image/jpeg[tmp\U name]=>Z:\tmp\php92A5.tmp[error]=>0[size]=>29175)[Picture2]=>Array([name]=>2010-10-02\u 135854.jpg[type]=>image/jpeg[tmp\tmp\p92a6.tmp[error]=>0[size]=>1035911][Picture3]=>数组([name]=>[type]=>[tmp\u name]=>[error]=>4[size]=>0))这意味着第一个文件正常,第二个文件正常,第三个文件未上载。和count($\u文件)返回3。但是正确的值是2。即使没有上载文件,每次都显示“1:”。@user337085:不应该是这样,您是否正在用POST数据刷新页面?您可以使用
print\r($\u文件)
:)进行测试。这没问题,但它会显示输入字段的总数。例如,如果我有3个字段,并且只上载了两个文件,它将显示3。打印输出是:([Picture1]=>Array([name]=>16.jpg[type]=>image/jpeg[tmp\U name]=>Z:\tmp\php92A5.tmp[error]=>0[size]=>29175)[Picture2]=>Array([name]=>2010-10-02\u 135854.jpg[type]=>image/jpeg[tmp\tmp\p92a6.tmp[error]=>0[size]=>1035911][Picture3]=>数组([name]=>[type]=>[tmp\u name]=>[error]=>4[size]=>0))这意味着第一个文件正常,第二个文件正常,第三个文件未上载。和count($\u文件)返回3。但是正确的值是2。请稍微解释一下脚本以改进答案。不鼓励只使用脚本的答案。$\u文件是一个数组,因此我使用sizeof来计算数组的元素。请稍微解释一下脚本以改进答案。不鼓励只使用脚本的答案。$\u文件是一个数组,因此我使用sizeof来计算数组的元素。$\u文件基于名称和任何输入,其中包含来自同一命名输入或数组[]的多个文件语法将不计入代码中。$\u文件具有基于名称的文件,并且具有来自同一命名输入或数组[]语法的多个文件的任何输入将不计入代码中。