3

我的第一篇文章,所以要温柔!我试过搜索这个并且有很多类似的帖子,但我似乎找不到与我的问题完全一样的东西,而且我已经在这个问题上待了好几个小时!:-/

我正在用 PHP (5.3) 和 MySQL 构建一个系统,部分功能是用户需要根据以前的选择上传一些文件。一个示例表格如下:

<form action="" method="post" enctype="multipart/form-data" id="uploadFiles">
<p>
<label for="file1">Upload file 1:</label>
<input type="file" name="file1" id="image">
</p>
<p>
<label for="file2">Upload file 2:</label>
<input type="file" name="file2" id="image2">
</p>
<p>
<input type="submit" name="upload" id="upload" value="Upload">
</p>
</form>

在这种情况下,用户需要上传两个不同的文档。这一切都对我有用,我可以将 2 个文件保存到服务器,然后通过循环“$_FILES”将 2 个记录插入到数据库中的表中,其中包含文件名、文件类型(pdf、jpg)和用户 ID 等我的上传课程。

然而,我想要做的是以某种方式将 name 属性添加<input name="foo">到插入的行中,以便“文件 1”在名为 document_type 的列中具有“file1”,而“文件 2”将具有“file2”。这样我就可以在 MySQL 中做一个基本的检查,看看用户是否上传了适当的文件。

切入正题,有没有办法在我的 Upload 类中将 INPUT“名称”属性分配或关联到 $_FILES 中的每个文件,以便当我循环访问 $_FILES 时,会有一个唯一的 document_type?

如果您需要有关我的设置的更多信息,请告诉我。

4

4 回答 4

1
foreach ($_FILES as $inputName => $uploadedFile) {
    echo $inputName, ':', PHP_EOL;
    print_r($uploadedFile);
}

输出

file1:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)
file2:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)
于 2012-11-07T13:00:31.477 回答
0

文件 INPUT 的名称应该是$_FILES数组中行的键。例如,在您的示例中, $_FILES 数组应该有两行可以像这样引用:$_FILES['file1']$_FILES['file2']. 因此,当您遍历数组时,只需查找该键值并将其插入行中。

于 2012-11-07T13:09:07.927 回答
0

最简单的方法是输入没有不同的名称,但将相同的名称写成数组,例如 name="file[]"。

于 2012-11-07T13:34:24.687 回答
0

我相信这个问题已经得到解答,但是对于未来的建议,如果您需要有关 CI 中传递参数的更多信息,您可以使用 Xdebug(我与 Netbeans 一起使用)。我只用了一个星期,它是一个很棒的工具!

于 2014-09-02T15:39:26.977 回答