Через PHP файлы можно загружать на сервер.
Примеры в этой главе выполнены в рамках тестового проекта, структура каталогов следующая:
test|-----upload # Каталог для загрузки файлов|-----form.html # Файл формы|-----upload_file.php # Код загрузки PHP
Разрешение пользователям загружать файлы из формы очень полезно.
Взгляните на следующую HTML-форму для загрузки файлов:
<html><head><meta charset="utf-8"><title>Руководство по программированию (codercto.com)</title></head><body><form action="upload_file.php" Method=" post " enctype="multipart/form-data"> <label for="file">Имя файла:</label> <input type="file" name="file" id="file"><br> <тип ввода ="отправить" имя="отправить" value="Отправить"></form></body></html>
Сохраните приведенный выше код в файл form.html.
Некоторые примечания к приведенной выше HTML-форме перечислены ниже:
Атрибут enctype тега <form> указывает, какой тип контента использовать при отправке формы. Если форма требует двоичных данных, таких как содержимое файла, используйте multipart/form-data .
Атрибут type="file" тега <input> указывает, что входные данные должны обрабатываться как файл. Например, при предварительном просмотре в браузере рядом с полем ввода вы увидите кнопку обзора.
Примечание. Разрешение пользователям загружать файлы представляет собой огромный риск для безопасности. Разрешите только доверенным пользователям выполнять операции по загрузке файлов.
Файл «upload_file.php» содержит код для загрузки файлов:
<?phpif ($_FILES["file"]["error"] > 0){ echo "Error:" . $_FILES["file"]["error"] . "<br>";}else{ echo " Имя файла загрузки: " . $_FILES["файл"]["имя"] . "<br>"; echo "Тип файла: " . $_FILES["файл"]["тип"] . "<br>"; echo "Размер файла: " . ($_FILES["file"]["size"] / 1024) " kB<br>"; echo "Место, где файл временно хранится: " . $_FILES[ "файл"]["tmp_name"];}?>
Используя глобальный массив PHP $_FILES, вы можете загружать файлы с клиентского компьютера на удаленный сервер.
Первый параметр — это входное имя формы, а второй индекс может быть «имя», «тип», «размер», «tmp_name» или «ошибка». Как показано ниже:
$_FILES["файл"]["имя"] - имя загруженного файла
$_FILES["file"]["type"] — Тип загружаемого файла.
$_FILES["file"]["size"] - Размер загружаемого файла в байтах.
$_FILES["file"]["tmp_name"] — Имя временной копии файла, хранящейся на сервере.
$_FILES["file"]["error"] - код ошибки, вызванной загрузкой файла
Это очень простой способ загрузки файлов. Из соображений безопасности вам следует добавить ограничения на то, кому разрешено загружать файлы.
В этом скрипте мы добавляем ограничения на загрузку файлов. Пользователи могут загружать только файлы .gif, .jpeg, .jpg, .png, размер файла должен быть менее 200 КБ:
<?php// Разрешены суффиксы загружаемых изображений $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = взрыв(".", $_FILES["file"][" name "]);$extension = end($temp); // Получаем суффикс файла if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["файл"]["тип"] == "изображение/jpeg")|| ($_FILES["файл"]["тип"] == "изображение/jpg")|| "файл"]["тип"] == "изображение/pjpeg")|| ($_FILES["файл"]["тип"] == "изображение/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // Менее 200 КБ&& in_array($extension, $allowExts)){ if ($_FILES["file"]["error"] > 0) { echo "Error:: " . $_FILES["файл"]["ошибка"] ."<br>"; } else { echo "Имя файла загрузки: " . $_FILES["file"]["name"] . "Тип файла: " . $_FILES["файл"]["тип"] . "<br>"; echo "Размер файла: " . ($_FILES["файл"]["размер"] / 1024) . " kB<br>"; echo "Место, где временно хранится файл: " . $_FILES["file"]["tmp_name"]; }}else{ echo "Недопустимый формат файла";}?>
В приведенном выше примере создается временная копия загруженного файла во временной папке PHP сервера.
Эта временная копия исчезнет после завершения сценария. Чтобы сохранить загруженный файл, нам нужно скопировать его в другое место:
<?php// Разрешены суффиксы загружаемых изображений $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = взрыв(".", $_FILES["file"][" name "]);echo $_FILES["file"]["size"];$extension = end($temp); // Получаем суффикс файла, если ((($_FILES["файл"]["тип"] == "изображение/gif")|| ($_FILES["файл"]["тип"] == "изображение/jpeg")|| ($ _FILES["файл"]["тип"] == "изображение/jpg")|| ($_FILES["файл"]["тип"] == "изображение/pjpeg")|| ($_FILES["файл"]["тип"] == "изображение/x-png")|| ($_FILES["файл"]["тип"] == "изображение/png"))&& ($ _FILES["file"]["size"] < 204800) // Менее 200 КБ&& in_array($extension, $allowedExts)){ if ($_FILES["файл"]["ошибка"] > 0) { echo "Ошибка: " . $_FILES["файл"]["ошибка"] . "<br>" } else { echo "Имя файла загрузки"; : " . $_FILES["файл"]["имя"] . "<br>"; echo "Тип файла: " . $_FILES["файл"]["тип"] . "<br>"; echo "Размер файла: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Место, где файл временно хранится: " . ["tmp_name "] . "<br>"; // Определяем, существует ли файл в каталоге загрузки в текущем каталоге // Если каталога загрузки нет, вам необходимо его создать. Разрешение каталога загрузки равно 777. (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] "Файл уже существует. "; } else { // Если файл не существует в каталоге загрузки, загрузите его в каталог загрузки move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "имя"]); echo "Файл хранится в: " . "upload/". $_FILES["file"]["name"]; } }}else{ echo «Недопустимый формат файла»;}?>
Приведенный выше сценарий проверяет, существует ли файл. Если он не существует, он копирует файл в каталог с именем «upload».