2010-10-20 10 views
7

J'essaye de charger plusieurs fichiers en utilisant HTML5. C'est mon code que j'ai trouvé sur certains sites. Dans le code PHP, il ne le reconnaît pas comme un tableau.Charger plusieurs fichiers en utilisant HTML5 et PHP

Est-ce que je fais quelque chose de mal? Quelqu'un peut-il me montrer une solution de travail?

Merci.

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

Les réponses ci-dessous ont correctement résolu le problème, et voici une page avec un exemple de travail complet qui pourrait aider quelqu'un d'autre qui trébuche sur cette page: http://tiffanybbrown.com/2011/03/29/quick -php-tip-uploading-fichiers-multiples-en-html5/ –

Répondre

8

Vous devez faire une sorte de tableau du nom:

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

Tout comme vous l'habitude de faire lors de l'utilisation des cases à cocher.

+0

merci! Cela a fait l'affaire. :) –

5

variables de formulaire qui sont des tableaux doivent être nommés avec un [], sinon PHP ne le voit pas comme un tableau. Donc:

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

devrait le faire.

1

Je sais que c'est un peu un ancien thread mais j'utilise ce petit script pour convertir la disposition (confuse) (pour moi) du tableau $ _FILES en une forme plus lisible. Name_input est le nom que vous avez donné à l'objet Input en 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] 
    ); 
}