如何循环HTML5多文件上传?

时间:2013-01-22 22:12:11

标签: php html5

我使用下面的表单将多个图片上传到我的服务器。

<form name="addimageForm" id="addimageForm" method="post" action="" enctype="multipart/form-data">              
    Gallery Image: 
    <input name="image_name[]" type="file" id="image_name" multiple="true">
    <input type="submit" name="addCatImage"/>
</form>

但我很困惑我应该如何遍历它以便我可以在我的数据库中插入多个图像。我使用下面的代码,当我运行它时,即使我选择了一个图像,我的表中也插入了4行。我认为它插入了所有数组字段(名称,大小,tmp_name)。我该如何解决这个问题?

foreach ($_FILES[image_name] as $file) {
    $access->uploadSubCatImages();
}

3 个答案:

答案 0 :(得分:1)

PHP使属性本身就是数组。是的,我不知道是谁决定的。

// PHP does this:
$_FILES['image_name']['name'] = array('file1', 'file2', 'file'3);
$_FILES['image_name']['type'] = array('...', ...);

http://www.php.net/manual/en/features.file-upload.multiple.php

答案 1 :(得分:0)

首先,$ _FILES数组的索引是字符串。虽然PHP会“吃掉”而只是抛出一个E_NOTICE,但你不应该这样做。请改用'image_name'。 (注意引号)

此外,阵列结构可能与您检测到的不同。以下将通过filen ames循环,例如:

foreach ($_FILES['image_name']['name'] as $filename) {
    // do work here
}

请参阅$_FILES上的文档,尤其是this doc页。

答案 2 :(得分:0)

$ _ FILES是多维的。使用您使用的语法,可以在

中访问文件名
$_FILES['image_name']['name'][0] # for the first one
$_FILES['image_name']['name'][1] # for the second one

等等。 以下是参考Uploading Multiple Files

的链接