2010-12-31 3 views
0

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

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

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

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

Спасибо!

ответ

1

ввода Имя файла поля как файл [] в HTML, а затем просто запустить цикл от 0 все почитаю ($ _ 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"; 
} 
} 
2

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

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

3

uploading multiple files объединить эту & 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"); 
    } 
} 
1

Я реализовал нечто подобное в прошлом следующим образом:

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

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

  3. На странице РНР посадки, просто сканировать $_FILES superglobal, ищет каждый «upload_X», где Х равно нуль через numuploads - 1.

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

+0

Есть одна проблема, которую я вижу, допустим, пользователь добавил u1, u2, u3, после чего удалил u2, теперь на странице у нас есть u1 и u3. Есть ли у вас аналогичная концепция scrpit в js/jquery, которую я могу использовать для решения этой проблемы? – Prashant

Смежные вопросы