2

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

<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();
}
4

3 回答 3

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

于 2013-01-22T22:18:57.070 回答
0

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

此外,数组结构可能与您预期的不同。以下将通过 filen ames 循环,例如:

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

请参阅文档$_FILES,尤其是文档页面。

于 2013-01-22T22:15:18.337 回答
0

$_FILES 是多维的。使用您使用的语法,文件名可以在

$_FILES['image_name']['name'][0] # for the first one
$_FILES['image_name']['name'][1] # for the second one

等等。这是参考上传多个文件的链接

于 2013-01-22T22:22:28.377 回答