将多个文件上传到服务器和

时间:2012-11-07 12:53:43

标签: php html mysql post file-upload

我的第一篇帖子很温柔!我已经尝试过搜索这个并且有许多类似的帖子,但我似乎找不到任何与我的问题完全相同的东西,而且我已经在这里待了几个小时! : - /

我正在使用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等我的上传课程。

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

要切入追逐,有没有办法将INPUT“name”属性分配或关联到我的Upload类中的$ _FILES中的每个文件,这样当我循环遍历$ _FILES时,有一个唯一的document_type?

如果您需要有关我的设置的更多信息,请与我们联系。

4 个答案:

答案 0 :(得分:1)

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

<强>输出

file1:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)
file2:
Array (
    'name' => ...
    'tmp_name' => ...
    ...
)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

最简单的是不要为输入使用不同的名称,而是将相同的名称写为数组,例如name =&#34; file []&#34;。

答案 3 :(得分:0)

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