2013-03-16 96 views
1

如果我使用多個文件字段,可以使用foreach檢索這些字段。這種方法工作正常。從HTML5多個文件字段獲取多個文件

<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']; 
} 
+0

我假設這是服務器端的PHP? – 2013-03-16 06:11:49

+0

你的輸入的名稱應該是'attachFile []'而不是'attachFile' - 看到這個答案:http://stackoverflow.com/a/8725752/921204 – techfoobar 2013-03-16 06:13:15

+0

是的,這是PHP。我試圖通過使用單個輸入字段來發送帶有多個附件的電子郵件。 – 2013-03-16 10:35:19

回答

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

並正確使用多個文件的輸入。

​​
+0

僅供參考請參閱http://php.net/manual/en/features.file-upload.multiple.php – 2013-03-16 08:59:19

相關問題