如何在PHP中计算上传文件的数量

4
我该如何统计已上传文件的数量? 这是我的表单代码:
<div id="dragAndDropFiles" class="uploadArea">
        <h1>Drop Images Here</h1>
    </div>
    <form id="sfmFiler" class="sfmform" method="post" enctype="multipart/form-data">
        <input type="file" name="file" id="file" multiple />
        <input type="submit" name="submitHandler" id="submitHandler" class="buttonUpload" value="Upload">
    </form>

以下是上传文件的PHP代码片段:

这是上传文件的PHP代码:

if($_SERVER['REQUEST_METHOD'] == "POST") {
    $tmpFilePath = $_FILES['file']['tmp_name'];
    $newFilePath = $dir.'/' . $_FILES['file']['name'];
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {
      echo "xxx files are successfully uploaded";
    }
} 

3
试试这个:count($_FILES['file']['name']),意思是统计上传文件数量。 - Murad Hasan
echo count($_FILES); - Saty
@Saty 这也总是给我一个数字1 - Jack Maessen
2
需要在文件名中使用数组,格式为 name="file[]" - Saty
6个回答

14

在这段代码中,您只获取了一个文件,这就是为仅得到计数结果为1的原因。如果更改输入文件名为 "file[]",则会发生变化。

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

然后使用下面这行代码,您将获得所需的结果。因为它需要一个数组字段来保存输入数据。

 <?php echo count($_FILES['file']['name']); ?>

谢谢,我在我的系统中尝试获取结果。


4
我可能会错,但是除非参数为空,否则计数始终为1或更大,因此即使没有上传文件,count()仍将等于1。 - A Friend

10

AFriend是正确的。以上答案总是返回1。

尝试:

echo count(array_filter($_FILES['file']['name']))

对我来说有效。

_t


3
使用array_filter函数可以实现该功能。
尝试:
$countfiles = count(array_filter($_FILES['file']['name']));

如果为空返回0,上传1个文件返回1,以此类推。


1
您可以使用count函数:
$no_files = count($_FILES);

1

如果您回答此问题,请确保提供完整的支持。继续。 - Murad Hasan

0
如果没有选择文件且您的文件数量为1,则可以在移动文件之前使用此行:
if (!empty($_FILES['file']['tmp_name'][0])) { 
    for($i=0;$i<$countfiles;$i++){

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接