2012-04-19 4 views
0

У меня есть входной файл, который является массивом, но то, что у меня было ранее, больше не работает, кажется, что он выдает ошибку для нескольких файлов, он просто загружает последний файл, я не могу понять, что Я сделал не так :(Загрузка ошибки массива нескольких файлов

<input type="file" name="userfile[]" id="userfile" class="multi" /> 

затем в мой контроллер:.

$upload_files = $_FILES; 
var_dump($upload_files['userfile']['name']); 
// get the selected files out of the array 
for($i = 0; $i < count($upload_files['userfile']['name']); $i++) { 
    $_FILES['userfile'] = array(
     'name' => $upload_files['userfile']['name'][$i], 
     'type' => $upload_files['userfile']['type'][$i], 
     'tmp_name' => $upload_files['userfile']['tmp_name'][$i], 
     'error' => $upload_files['userfile']['error'][$i], 
     'size' => $upload_files['userfile']['size'][$i] 
); 
+1

Я считаю, что массив файлов Виль '$ _FILES [ 'UserFile' ] 'not' $ _FILES ['userfile'] ['name'] ' – Dale

+1

Итак, в вашем случае:' $ upload_files ['userfile'] ' – Dale

+0

попробуйте эту ссылку http://www.codeproject.com/Articles/ 19606/Javascript-PHP-Multiple-File-U pload – chhameed

ответ

2

Вы перезапись $_FILES['userfile'] на каждой итерации массива (поэтому только последний файл загружен)

Создайте новый элемент массива каждый раз, когда он зацикливается.

Кроме того, изменить цикл для перебора $upload_files['userfile'] вместо $upload_files['userfile']['name'] как предложено в комментариях выше :)


Просто указатель - это лучше назначить count($upload_files['userfile']) переменной за пределами вашего for цикла. Вероятно, это не будет иметь большого значения, если ваш массив имеет только несколько элементов, но имеет большие преимущества при работе с большими массивами.

Заканчивать http://www.phpbench.com/

1

Вы перезапись массив на каждой итерации, попробовать что-то вроде:

foreach($upload_files['userfile'] as $i => $file) { 
    $_FILES['userfile_org'][$i] = array(
     'name' => $file['name'], 
     'type' => $file['type'], 
     'tmp_name' => $file['tmp_name'], 
     'error' => $file['error'], 
     'size' => $file['size'] 
    ); 
    } 
    echo "<pre>"; var_dump($_FILES['userfile_org']); die; 
+0

В чем разница между вашими ans и deifud ans? – chhameed

+0

Единственное отличие заключается в том, что у меня есть образец решения. Пока стоял, не видел ответа :( –