多文件上传问题

时间:2011-06-07 05:48:57

标签: php

我是PHP的新手,想知道如何才能实现以下结果。

我有一个HTML表单来上传多个文件(仅限PDF),最多可以说5个文件。 对于每个文件,它有一个select标签用于选择不同的用户(从DB检索),另一个选择标签用于不同的月份。理想情况下,如果用户逐个选择文件,而不是在中间跳过任何文件,则不复杂。

<input type=file name=pdf[] />
<select name=user[]>
  <option value=a>user a</option>
  <option value=b>user b</option>
  <option value=c>user c</option>
</select>
<select name=month[]>
  <option value=jan> jan </option>
               .
               .
               . so on
</select>

示例:

File1.pdf --- UserA --- Jan
File2.pdf --- UserB --- Feb
Not choose ---
File4.pdf --- UserA --- Mar
Not choose ---

当我点击submit时,数据包含几个数组,一个来自$_POST,另一个来自$_FILES,所以我如何重新构建这些数组并将其组合到一个新数组中,并消除那些空洞的。

赞:

Array(
[0]=> Array(user=>userA, month=>Jan, filename=>File1.pdf, type=>application/pdf, size=>1234456)
[1]=> Array(user=>userB, month=>Feb, filename=>File2.pdf, type=>application/pdf, size=>1234456)
[2]=> Array(user=>userA, month=>Mar, filename=>File4.pdf, type=>application/pdf, size=>1234456)
)

提前致谢!

1 个答案:

答案 0 :(得分:-1)

只需给你的字段更好的名字:

result[0][user]result[0][month]result[0][pdf]
result[1][user]result[1][month]result[1][pdf]

然后只需将文件重新组合到结果中:

$results = $_POST['result'];
foreach ($results as $i => &$result) {
    if (isset($_FILES['result'][$i]['pdf']) && is_array($_FILES['result'][$i]['pdf'])) {
        $result = array_merge($result, $_FILES['result'][$i]['pdf']);
    }
}