2010-10-20 43 views
7

我試圖使用HTML5加載多個文件。 這是我在某個網站上找到的代碼。 在PHP代碼中,它不會將其識別爲數組。使用HTML5和PHP加載多個文件

我做錯了什麼?有人能告訴我一個工作解決方案嗎?

謝謝。

的index.html

<form action='save.php' method='post' enctype='multipart/form-data'> 
<input name="uploads" type="file" multiple="multiple" /> 
<input type='submit' value="Upload File"> 
</form> 

save.php

function GetFiles() { 
     $files = array(); 
     $fdata = $_FILES["uploads"]; 
     if (is_array($fdata["name"])) {//This is the problem 
       for ($i = 0; $i < count($fdata['name']); ++$i) { 
         $files[] = array(
          'name' => $fdata['name'][$i], 
          'tmp_name' => $fdata['tmp_name'][$i], 
         ); 
       } 
     } else { 
       $files[] = $fdata; 
     } 

     foreach ($files as $file) { 
       // uploaded location of file is $file['tmp_name'] 
       // original filename of file is $file['file'] 
     } 
} 
+0

下面的答案都正確解決了問題,這裏是一個完整的工作示例,可以幫助一個頁面別人誰在這個頁面失蹄:http://tiffanybbrown.com/2011/03/29/quick -php-tip-uploadloading-multiple-files-in-html5/ – 2011-07-28 18:54:51

回答

8

你需要作出某種名稱的數組:

<input name="uploads[]" type="file" multiple="multiple" /> 

就像你使用使用複選框時候做。

+0

謝謝!那就是訣竅。 :) – 2010-10-20 22:22:45

5

形式變量是數組必須以[]被命名,否則PHP不把它看作一個陣列。所以:

<form action='save.php' method='post' enctype='multipart/form-data'> 
<input name="uploads[]" type="file" multiple="multiple" /> 
<input type='submit' value="Upload File"> 
</form> 

應該這樣做。

1

我知道這是一種古老的線程,但我使用這個小腳本將$ _FILES數組的混亂佈局轉換爲更易讀的形式。 Name_input是您在HTML中爲輸入對象提供的任何名稱。

for($i=0; $i<count($_FILES['name_input']['name']); $i++) { 
    $betterfiles[] = array(
     "name" => $_FILES['name_input']['name'][$i], 
     "type" => $_FILES['name_input']['type'][$i], 
     "tmp_name" => $_FILES['name_input']['tmp_name'][$i], 
     "error" => $_FILES['name_input']['error'][$i], 
     "size" => $_FILES['name_input']['size'][$i] 
    ); 
}