Загрузка нескольких файлов с PHP / Javascript и без флэш - PullRequest
4 голосов
/ 09 ноября 2008

Я пытаюсь создать веб-страницу, которая позволяет загружать несколько файлов одновременно. Я ограничу расширения файлов наиболее распространенными изображениями, такими как JPG, JPEG, PNG и GIF.

Я провел некоторое исследование по этому вопросу, и везде я смотрю, это вспышка это и вспышка это.

Я не хочу использовать вспышку на самом деле. Особенно с Flash 10, который отключает наиболее распространенный используемый метод для включения многофайловой загрузки.

То, что я ищу, - это способ продолжать создавать все больше и больше полей ввода, каждое с кнопкой обзора, а затем с одной последней кнопкой загрузки в нижней части формы. Создание новых полей ввода с помощью Javascript не представляет особой сложности.

Так что мне интересно, как это работает. Нужно ли давать всем полям ввода файлов одинаковые атрибуты имени, чтобы я мог использовать 1 часть кода PHP для решения этой проблемы? Или есть ли какой-нибудь способ для PHP определить, сколько файлов было добавлено, и просто поместить код для анализа файла в цикл for?

Ответы [ 4 ]

12 голосов
/ 09 ноября 2008

Вы можете продолжать добавлять «файловые» входы, но использовать имя типа «upload []»

<input type="file" name="upload[]">

Тогда в $ _FILES ['upload'] у вас будет массив файлов, которые вы можете зациклить, например,

foreach ($_FILES['upload'] as $file) {
    echo $file['size'];
}
2 голосов
/ 09 ноября 2008

Вот алгоритм:

Вы добавляете новые поля ввода файлов в форму. Каждое из этих полей ДОЛЖНО иметь уникальное имя. Затем на стороне сервера вы просматриваете массив $ _FILES, просматривая количество загруженных файлов и обрабатывая их.

0 голосов
/ 10 ноября 2008

Если у вас есть разумный максимальный предел количества файлов, вероятно, лучше включить столько полей загрузки файлов в статической форме, а затем использовать JavaScript, чтобы скрыть лишние, чем создавать их все динамически. Тогда форма все еще может работать, когда JavaScript недоступен.

Примечание: технически, отдельные формы загрузки файлов HTML уже являются несколькими формами загрузки файлов. В соответствии со стандартом кодирования HTML-формы в диалоговом окне «Обзор» можно выбрать несколько файлов, и они будут представлены в виде составной / смешанной структуры MIME.

Однако на самом деле это практически ничто не поддерживает. Более старые версии Opera работают на стороне клиента (и, как мне кажется, какой-то древний тестовый браузер, возможно, Viola), и несколько компонентов для разбора форм на стороне сервера, но не встроенные PHP-компоненты. В любом случае, пользовательский интерфейс не очень удобен, так что вы не пропустите.

0 голосов
/ 09 ноября 2008

Используя JavaScript для добавления новых полей загрузки, вы также можете сделать так, чтобы JavaScript обновлял некоторые «скрытые» поля ввода с помощью количества полей загрузки в форме. Таким образом, как только вы нажмете Submit, это скрытое значение должно быть отправлено, и будет просто разобрать массив $ _FILES для всех загруженных файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...