Загрузка файлов на сервер через PHP

Загрузка файлов на сервер через PHP

6369

В создании эксклюзивных проектов иногда нужно загружать файлы пользователя (к примеру: документы, фото или видео, ...) на сервер. Для этого используется HTML тег input с атрибутом type="file", а обработкой полученных файлов занимается PHP скрипт.

PHP обработка файлов, которые загружаются через форму, работает через глобальный массив $_FILES:

Загрузка одного файла

Для отправки файла с формы используется метод POST, обязательно нужно добавить к тегу

атрибут enctype="multipart/form-data", который определяет способ кодирования отправляемых данных.

HTML код отправки файла методом POST


PHP код

Результат

Значения массива $_FILES:

$_FILES['filename']['name'] Имя загружаемого файла в браузере
$_FILES['filename']['type'] Mime-тип файла. Тип: изображение, музыка, текст, видео, архив и др.
$_FILES['filename']['size'] Размер полученного файла в байтах.
$_FILES['filename']['tmp_name'] Временное имя файла, под которым он сохранен на сервере
$_FILES['filename']['error'] Код ошибки при загрузке файла

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

Для загрузки нескольких файлов к тегу input type="file" нужно добавить атрибут multiple, а полю name квадратные скобки.

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



PHP код полученного массива $_FILES

Результат


Указать максимальный размер загружаемого файла

Определить размер загружаемого файла можно добавив в форму скрытое поле input type="hidden" name="MAX_FILE_SIZE" value="размер в байтах":

Пример указания максимального размера


В случае превышения размера файла $_FILES['filename']['error'] выдаст ошибку с кодом «2».


Коды ошибок загрузки файлов

При возникновении ошибок загрузки файла, в массиве $_FILES['file']['error'] будет содержатся её код. Значения кодов ошибок:

Код Константа Описание
0 UPLOAD_ERR_OK Ошибок не возникло, файл успешно загружен на сервер.
1 UPLOAD_ERR_INI_SIZE Размер файла превысил максимально допустимый размер, который задан директивой upload_max_filesize
2 UPLOAD_ERR_FORM_SIZE Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
3 UPLOAD_ERR_PARTIAL Загружаемый файл был получен только частично.
4 UPLOAD_ERR_NO_FILE Файл не был загружен.
6 UPLOAD_ERR_NO_TMP_DIR Отсутствует временная папка.
7 UPLOAD_ERR_CANT_WRITE Не удалось записать файл на диск (возникает, когда на хостинге закончилось место).
8 UPLOAD_ERR_EXTENSION PHP-расширение остановило загрузку файла.

Настройки PHP

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

Посмотреть установленные значения можно с помощью PHP функции phpinfo()

В php.ini:
В .htaccess:

В PHP скрипте:

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

Помогла ли вам статья?
346 раз уже помогла
Комментарии: (0)

КАТЕГОРИИ