## Загрузка нескольких файлов

Набор файлов загружают через разные значения атрибута `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-приложение не должно доверять этой информации.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open