1

複数のファイル フィールドを使用する場合、それらは 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'];
}
4

1 に答える 1

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[]">
于 2013-03-16T08:53:10.637 に答える