Я знаю, что это старый пост, но некоторые дополнительные объяснения могут быть полезны для тех, кто пытается загрузить несколько файлов ... Вот что вам нужно сделать:
- Входное имя должно быть определено как массив, т.е.
name="inputName[]"
- Элемент ввода должен иметь
multiple="multiple"
или просто multiple
- В вашем файле PHP используйте синтаксис
"$_FILES['inputName']['param'][index]"
- Обязательно ищите пустых имен файлов и путей , массив может содержать пустых строк . Используйте
array_filter()
до подсчета.
Вот простой и грязный пример (показывает только соответствующий код)
HTML:
<input name="upload[]" type="file" multiple="multiple" />
PHP:
//$files = array_filter($_FILES['upload']['name']); //something like that to be used before processing files.
// Count # of uploaded files in array
$total = count($_FILES['upload']['name']);
// Loop through each file
for( $i=0 ; $i < $total ; $i++ ) {
//Get the temp file path
$tmpFilePath = $_FILES['upload']['tmp_name'][$i];
//Make sure we have a file path
if ($tmpFilePath != ""){
//Setup our new file path
$newFilePath = "./uploadFiles/" . $_FILES['upload']['name'][$i];
//Upload the file into the temp dir
if(move_uploaded_file($tmpFilePath, $newFilePath)) {
//Handle other code here
}
}
}
Надеюсь, это поможет!