не может получить несколько загруженных файлов из $ _FILES в php - PullRequest
3 голосов
/ 12 декабря 2011

Я не могу получить несколько файлов в моем php-коде из $ _FILES. Вот форма ввода:

<form enctype="multipart/form-data" action="file-upload.php" method="POST">
  Upload the several files:<input type="file" multiple="multiple" name="uploaded" id="id_upload" />
  <input type="submit" value="Upload" />
</form>

Вот код php из файла upload.php:

 // first let's find out how many files were uploaded..
 $numUploadedfiles = count($_FILES['uploaded']);
 $num_FILES = count($_FILES); 
        // BOTH COUNTS ARE 5.  I SELECT 7 FILE NAMES FOR UPLOADING THOUGH.


 echo "<br>" . "The number of uploaded files is == " . $numUploadedfiles;
 echo "<br>" . "Here is the name of _FILES['uploaded']: " . $_FILES['uploaded'];
     // THE NAME REPORTED IS 'array' AND THE COUNT IS 5..


 echo "<br>" . "The count size of _FILES is == " . $num_FILES;
 echo "<br>" . "Here is the name of _FILES => " . $_FILES;
       // HERE ALSO, THE NAME REPORTED IS 'array' AND THE COUNT IS 5.


 echo "<br>file temp_name " . $i . " is: " . $_FILES['uploaded']['tmp_name'];
 echo "<br>file name " . $i . " is: " . $_FILES['uploaded']['name'];
        // THE NAME REPORTED HERE IS THE FILENAME OF LAST OF THE 7 FILES I UPLOADED (not sure why.)


 echo "<br>" . "Here are the filenames: ";
 for($i = 0; $i < $numUploadedfiles; $i++)
 {
    echo "<br>filename " . $i . " is: " . $_FILES['uploaded'][$i];
 }
 exit();

Что происходит, когда я запускаю это, когда запускается цикл for, появляется сообщение об ошибке, в котором говорится, что индексы $ i в массив _FILES ['uploaded'] [$ i] недопустимы.

Почему это? Мне нужно получить эти 7 имен файлов и быть в состоянии сохранить их на сервере. Как я могу:

1) получить точный «подсчет» количества файлов? Код выше дает счет 5, когда я загружаю 7 файлов

2) как правильно индексировать через массив _FILES в цикле 'for'? PHP сообщает мне значения $ i 0, 1, 2, 3 .... не действительны.

(PS Я использую код ввода type = "file" множественный = "множественный" name = "загруженный" id = "id_upload" из примера, который я видел для включения множественной загрузки файлов на Извлечение имен файлов из управление загрузкой нескольких файлов с использованием JavaScript )

Ответы [ 2 ]

6 голосов
/ 12 декабря 2011

Ваше имя должно быть массивом:

<input type="file" name="uploaded[]" id="id_upload" />

0 голосов
/ 12 декабря 2011

Этот код не реализует ваши цели.Вы должны использовать несколько входных тегов.

Если вы хотите загрузить несколько файлов, но количество файлов является переменным, вы можете использовать java-скрипт для получения количества файлов

...