PHP - 上传多个文件

时间:2010-11-14 18:13:37

标签: php wordpress plugins forms upload

我正在开发一个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数组作为参数。

2 个答案:

答案 0 :(得分:18)

尝试:

$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);
  }
}

答案 1 :(得分:0)

你不能遍历你的文件数组,然后调用upload_handlers吗?

e.g。

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] );
}