从HTML5多文件字段中获取多个文件

时间:2013-03-16 05:54:27

标签: php html5 input

如果我使用多个文件字段,可以使用foreach检索这些字段。这种方法工作正常。

<input type="file" name="attachFile">
<input type="file" name="attachFile2">
<input type="file" name="attachFile3">
foreach($_FILES as $attachFile)
{
  $tmp_name = $attachFile['tmp_name'];
  $type = $attachFile['type'];
  $name = $attachFile['name'];
  $size = $attachFile['size'];
}

如果我对HTML5多文件字段执行相同操作,则无效。以下是我没有运气的例子。它也不会产生任何错误。

<input multiple="multiple" type="file" name="attachFile">
foreach($_FILES['attachFile'] as $attachFile)
{
  $tmp_name = $attachFile['tmp_name'];
  $type = $attachFile['type'];
  $name = $attachFile['name'];
  $size = $attachFile['size'];
}

1 个答案:

答案 0 :(得分:1)

这样做。创建一个函数,并首先确定要附加的文件数。使用该功能附加每个文件。

function reArrayFiles(&$attachFile) 
  {
        $file_ary = array();
        $file_count = count($attachFile['name']);
        $file_keys = array_keys($attachFile);
        for ($i=0; $i<$file_count; $i++) 
       {
            foreach ($file_keys as $key) 
            {
                $file_ary[$i][$key] = $attachFile[$key][$i];
            }
        }
        return $file_ary;
    }


          $file_ary = reArrayFiles($_FILES['attachFile']); 
          foreach($file_ary as $file)
          {
             $tmp_name = $file['tmp_name'];
             $type = $file['type'];
             $name = $file['name'];
             $size = $file['size'];
          }

正确使用多个文件的输入。

<input multiple="multiple" type="file" name="attachFile[]">