【发布时间】:2011-03-06 16:46:30
【问题描述】:
有没有什么解决方案可以在不使用 Flash 的情况下一次上传多个文件? :)
不是这样:选择一个文件,它进入股票,选择第二个文件,它进入股票然后上传。但是一次选择所有需要的文件并上传它们。
【问题讨论】:
-
可能一张一张上传,一张完成后再开始另一张?
有没有什么解决方案可以在不使用 Flash 的情况下一次上传多个文件? :)
不是这样:选择一个文件,它进入股票,选择第二个文件,它进入股票然后上传。但是一次选择所有需要的文件并上传它们。
【问题讨论】:
HTML5 通过在输入中指定“multiple”属性来支持多个文件。
为输入提供一个以方括号结尾的名称属性(即“myfileinput[]”),它在 PHP 中看起来就像在页面上有两个输入称为相同的东西一样。
这显然在旧版浏览器中不起作用,但是可以通过 JS 检测到缺少对多个文件上传的支持,并且可以通过 JS 创建多个文件输入。
【讨论】:
您可以有多个文件输入字段:
<input type="file" name="file1" />
<input type="file" name="file2" />
etc...
或
<input type="file" name="file[]" />
<input type="file" name="file[]" />
它们可以通过 Javascript 动态创建,也可以从服务器提前创建。无论哪种方式,您都会上传多个文件,但每个输入字段只有一个文件。
第一个选项将按预期工作。您将在 PHP 中为每个文件获得一个 $_FILES 数组条目。使用数组表示法的另一个选项有点违反直觉。你得到的东西看起来像
$_FILES = array(
'file' => array(
'name' => array(
0 => 'name of first file',
1 => 'name of second file
),
'type => array(
0 => 'mime type of first file',
1 => 'mime type of second file',
etc....
【讨论】: