PHP - 上传多个文件
Posted
技术标签:
【中文标题】PHP - 上传多个文件【英文标题】:PHP - Uploading multiple files 【发布时间】:2011-05-09 21:31:00 【问题描述】:我正在开发一个 wordpress 插件,我希望能够从一个表单上传多张图片。现在,当我有一张包含两张图片的表单并将其提交为空时,我的 $_FILES 数组如下所示:
Array (
[image] => Array (
[name] => Array (
[1] =>
[2] =>
)
[type] => Array (
[1] =>
[2] =>
)
[tmp_name] => Array (
[1] =>
[2] =>
)
[error] => Array (
[1] => 4
[2] => 4
)
[size] => Array (
[1] => 0
[2] => 0
)
)
)
现在的问题是我想使用 wordpress 的上传处理程序 wp_handle_upload。它期望 $_FILES 数组作为参数,但只有一个文件。我想它只能是两个阵列深,而不是像我的三个阵列。所以我想知道是否有一种方法可以从 $_FILES 数组中一次提交一个文件。这些文件在每个数组中具有相同的键。
编辑:更改了帖子,因为我了解到 wp_handle_upload 需要 $_FILES 数组作为参数。
【问题讨论】:
您的文件输入是否恰好带有一个名称=,例如image[]
?
【参考方案1】:
试试:
$files = $_FILES['image'];
foreach ($files['name'] as $key => $value)
if ($files['name'][$key])
$file = array(
'name' => $files['name'][$key],
'type' => $files['type'][$key],
'tmp_name' => $files['tmp_name'][$key],
'error' => $files['error'][$key],
'size' => $files['size'][$key]
);
wp_handle_upload($file);
【讨论】:
这几乎让我受益匪浅,谢谢!我不得不将数组中的 $key 更改为 $x,因为那是用于递增的变量。现在唯一的问题是,当我将文件字段留空时,它仍然会通过该循环进行处理。 @Toxid:查看我的更新,您可以将整个内容包装在if
中。
非常感谢!我正在尝试使用 ifs,但不知道该怎么做。
@Toxid if($_FILES['image']['error']
【参考方案2】:
你不能循环遍历你的文件数组然后调用upload_handlers吗?
例如
for( $i = 1; $i <= count( $_FILES['image']['name']; $i++ )
// just cguessing on the args wp_handle_upload takes
wp_handle_upload( $_FILES['images']['tmp'][$i], $_FILES['images']['name'][$i] );
【讨论】:
好主意,我也想过这个问题。在做了一些研究之后,我意识到我在第一篇文章中错了。 wp_handle_upload 需要 $_FILES 数组作为参数,但只有一个文件。所以我猜它只能是两个数组深。以上是关于PHP - 上传多个文件的主要内容,如果未能解决你的问题,请参考以下文章