Загрузка нескольких файлов с использованием HTML5 и PHP - PullRequest
8 голосов
/ 20 октября 2010

Я пытаюсь загрузить несколько файлов, используя 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']
        }
}

Ответы [ 3 ]

9 голосов
/ 20 октября 2010

Вам нужно создать какой-то массив имени:

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

Точно так же, как вы делали это при использовании флажков.

7 голосов
/ 20 октября 2010

переменные формы, которые являются массивами, должны именоваться с [], иначе 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 голос
/ 06 февраля 2014

Я знаю, что это своего рода старый поток, но я использую этот небольшой скрипт, чтобы преобразовать (для меня) запутанный макет массива $ _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]
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...