Я пытаюсь создать веб-страницу, которая позволяет одновременно загружать несколько файлов. Я ограничу расширения файлов наиболее распространенными изображениями, такими как JPG, JPEG, PNG и GIF.
Я провел некоторое исследование по этому поводу, и повсюду я смотрю, как это вспыхивает и вспыхивает.
Я действительно не хочу использовать флеш. Особенно с Flash 10, который отключает наиболее распространенный метод, позволяющий многоточечную загрузку.
Я ищу способ сохранить все больше полей ввода, каждый с кнопкой обзора, а затем с одной последней кнопкой загрузки в нижней части формы. Создание новых полей ввода с помощью Javascript действительно не имеет большого значения.
Поэтому мне интересно, как это работает. Должен ли я предоставить всем полям ввода файлов одно и то же имя, поэтому я могу использовать 1 часть кода PHP для решения этой проблемы? Или есть ли какой-то способ для PHP определить, как много файлов были отключены, и просто поместить код для анализа файла внутри цикла?
Вот алгоритм:
Вы добавляете новые поля ввода файла в свою форму. Каждое из этих полей ДОЛЖНО иметь уникальное имя. Затем, на стороне сервера, вы просматриваете массив $ _FILES, просматривая, сколько файлов было загружено и обрабатывается.
Вы можете добавлять вложения «файл», но использовать имя что-то вроде «upload []»
<input type="file" name="upload[]">
Затем в $ _FILES ['upload'] у вас будет массив файлов, которые вы можете перебрать
foreach ($_FILES['upload'] as $file) { echo $file['size']; }
При использовании JavaScript для добавления новых полей для загрузки вы также можете обновить JavaScript в некотором «скрытом» поле ввода с количеством полей для загрузки в форме. Таким образом, как только вы нажмете «Отправить», это скрытое значение должно быть представлено, и будет тривиально разбирать массив $ _FILES для всех загруженных файлов.
Если у вас есть разумный максимальный предел количества файлов, вероятно, лучше включить это много полей для загрузки файлов в статическую форму, а затем использовать JavaScript, чтобы скрыть лишние, чем создавать их все динамически. Тогда форма может работать, когда JavaScript недоступен.
Сторона примечания: технически, отдельные формы загрузки файлов HTML – это уже несколько форм загрузки файлов. Согласно стандарту кодирования HTML-формы, вы должны выбрать несколько файлов в диалоговом окне «Обзор», и они будут представлены в виде многофайловой / смешанной структуры MIME.
Однако практически ничего не поддерживает. Старые версии Opera работают на стороне клиента (и, я думаю, древний тестовый браузер какого-то типа, возможно, Viola) и несколько компонентов для разбора текста на стороне сервера, но не встроенные PHP. В любом случае пользовательский интерфейс не очень удобен, поэтому вам не хватает многого.