Набор файлов загружают через разные значения
атрибута name
в input
-элементах формы.
Возможно также загружать набор файлов одновременно и автоматически получать файлы в виде массива. Для этого в HTML-форме пользуются тем же синтаксисом отправки массива, что и для отправки списка значений через HTML-элементы SELECT или поля ввода с типом checkbox:
Пример #1 Загрузка нескольких файлов
<form action="file-upload.php" method="post" enctype="multipart/form-data"> Файлы:<br /> <input name="userfile[]" type="file" /><br /> <input name="userfile[]" type="file" /><br /> <input type="submit" value="Отправить" /> </form>
При отправке приведённой формы PHP инициализирует массивы $_FILES['userfile'], $_FILES['userfile']['name'] и $_FILES['userfile']['size'].
Предположим, что отправили файлы /home/test/review.html и /home/test/xwp.out. Тогда переменная $_FILES['userfile']['name'][0] будет содержать значение review.html, а переменная $_FILES['userfile']['name'][1] — xwp.out. Аналогично, переменная $_FILES['userfile']['size'][0] будет содержать размер файла review.html и так далее.
PHP также инициализирует переменные $_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0] и $_FILES['userfile']['type'][0].
Параметр конфигурации max_file_uploads ограничивает количество файлов, которое разрешается загружать за один запрос. Потребуется проверить, что форма не пытается загрузить за один запрос больше файлов, чем ограничение.
Пример #2 Загрузка каталога
В HTML-полях выбора файла для загрузки указывают атрибут webkitdirectory
,
чтобы загрузить весь каталог.
Бо́льшая часть браузеров поддерживает эту функцию.
Информация, которую хранит элемент full_path
, помогает сохранить
относительные пути или воссоздать такой же каталог на сервере.
<form action="file-upload.php" method="post" enctype="multipart/form-data"> Загрузка каталога:<br /> <input name="userfile[]" type="file" webkitdirectory multiple /> <input type="submit" value="Загрузить файлы" /> </form>
Атрибут webkitdirectory
нестандартен и не соответствует спецификациям.
Не рекомендуется включать атрибут в элементы форм на рабочих сайтах: атрибут работает не у каждого пользователя.
Способ обработки атрибута несовместим между браузерами, и поведение могут изменить в будущих выпусках.
PHP анализирует только информацию об относительном пути, которую отправили браузер или пользовательский агент,
и передаёт информацию в суперглобальный массив $_FILES.
Нет гарантии, что значения в массиве full_path
содержат реальную структуру каталогов,
и PHP-приложение не должно доверять этой информации.