PHP: загрузка нескольких файлов без ajax - PullRequest
0 голосов
/ 31 декабря 2010

Мне нужен любой скрипт php, который может продемонстрировать мне, как загружать несколько файлов на PHP. В моем приложении я дал ссылку «Добавить изображение» и «Удалить изображение», по нажатию кнопки «Добавить изображение» я добавляю новое поле загрузки на страницу, используя JavaScript, используя который пользователь может загружать все больше и больше изображений без ограничений на количество изображений на данный момент. При удалении я удаляю этот элемент.

Я просто не понимаю, как их обрабатывать в запросе POST в PHP. Я знаю в HTML, если мы дадим имя полю, например myimages[], тогда оно создаст массив PHP, но как это обработать.

Я не хочу использовать AJAX / JavaScript для загрузки, хочу сделать это с традиционным запросом POST в PHP.

Если у кого-либо есть какая-либо ссылка или код, демонстрирующий такую ​​функциональность, просьба сообщить, что это будет действительно полезно.

Спасибо!

Ответы [ 4 ]

3 голосов
/ 31 декабря 2010

объединить это загрузка нескольких файлов & move_uploaded_file

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>

$uploads_dir = '/uploads';
foreach ($_FILES["userfile"]["error"] as $key => $error) 
{
    if ($error == UPLOAD_ERR_OK) 
    {
        $tmp_name = $_FILES["userfile"]["tmp_name"][$key];
        $name = $_FILES["userfile"]["name"][$key];
        move_uploaded_file($tmp_name, "$uploads_dir/$name");
    }
}
2 голосов
/ 31 декабря 2010

Загруженные файлы не находятся в массиве POST, они находятся в массиве FILES.http://www.php.net/manual/en/features.file-upload.multiple.php

Файлы загружаются во временную область с «безопасными» именами.Массив будет содержать имя файла и файл tmp.Затем вы можете переместить их туда, куда вы хотите.

1 голос
/ 31 декабря 2010

В прошлом я реализовывал нечто подобное:

  1. Имеет скрытую переменную формы JavaScript (например, "numuploads"), которая хранит количество входных файлов, находящихся в данный момент вформа.Это нужно будет увеличивать / уменьшать, когда вы добавляете / удаляете вход на внешнем интерфейсе.

  2. Назовите каждый из входов на внешнем интерфейсе, используя шаблон, такой как «upload_X»,где X является следующим в последовательности.(Эффективно так же, как счетчик выше -1.)

  3. На целевой странице PHP просто отсканируйте $ _ FILES superglobal , ища каждый "upload_X", гдеX - ноль через numuploads - 1.

Затем можно выполнить необходимую логику для каждого из загруженных файлов, других элементов формы и т. Д.

1 голос
/ 31 декабря 2010

Назовите поля ввода файла как file [] в HTML, затем просто запустите цикл из 0 do count ($ _ FILES) в PHP ...

for($i = 0; $i < count($_FILES['file']['tmp_name']); $i++){
    $tmp = $_FILES['file']['tmp_name'][$i];
    $name = md5(microtime());

 if(move_uploaded_file($tmp, "dir/$name.jpg")){
    echo "File '$tmp' uploaded successfully";
 }else{
    echo "Uploading '$tmp' failed";
 }
}
...