PHP5 Загрузка файла
PHP легко загружает файлы на сервер.
Однако с легкостью наступает опасность, поэтому всегда будьте осторожны, когда разрешение загрузки файлов!
Настройка файла "php.ini"
Во-первых, убедитесь, что PHP файл настроен на разрешение загрузки файлов.
В файле "php.ini", поиск директиву file_uploads
и установить его On
:
file_uploads = On
PHP Создание HTML формы
Затем создайте HTML форму, позволяющую пользователям выбирать файл изображения, который они хотят загрузить:
<!DOCTYPE html>
<html>
<body>
<form action="upload.php" method="post"
enctype="multipart/form-data">
Выберите изображение для загрузки:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Загрузить изображение" name="submit">
</form>
</body>
</html>
Некоторые правила, которым нужно следовать для HTML формы:
- Убедитесь, что форма использует
method="post"
- Форма также нуждается в следующем атрибуте:
enctype="multipart/form-data"
. Он указывает, какой тип контента использовать при отправке формы
Без вышеуказанных требований загрузка файла не будет работать.
Другие вещи, чтобы заметить:
- Атрибут
type="file"
, тега<input>
, показывает поле ввода, как элемент управления выбор файла в "Браузере", кнопка рядом с элементом управления ввода
Форма отправляет данные в файл с именем "upload.php", что мы создадим дальше.
PHP Создание файла для загрузки скрипта
Файл "upload.php" содержит код для загрузки файла:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Проверьте, является ли файл изображения фактическим изображением или поддельным изображением
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "Файл является изображением - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "Файл не является изображением.";
$uploadOk = 0;
}
}
?>
Объяснение скрипта PHP:
$target_dir = "uploads/"
- указывает каталог, в который будет помещен файл$target_file
- указывает путь к загружаемому файлу$uploadOk=1
- еще не используется (будет использоваться позже)$imageFileType
- содержит расширение файла (в нижнем регистре)- Затем проверяется, является ли файл изображения, фактическим изображением или поддельным изображением
Примечание: Вам нужно будет создать новый каталог с именем каталога "uploads", где будет находиться загруженный файл "upload.php".
PHP Проверить, существует ли файл
Теперь можно добавить некоторые ограничения.
Во-первых, мы проверим, если файл уже существует в папке "uploads".
Если отображается сообщение об ошибке, и $uploadOk
установлен в 0
:
// Проверить, существует ли файл
if (file_exists($target_file)) {
echo "Извините, файл уже существует.";
$uploadOk = 0;
}
PHP Ограничить размер файла
Поле ввода файла в форме HTML выше называется "fileToUpload"
.
Теперь можно проверить размер файла. Если Размер файла превышает 500 КБ, отображается сообщение об ошибке,
а значение $uploadOk
равно 0
:
// Проверить размер файла
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Извините, ваш файл слишком большой.";
$uploadOk = 0;
}
PHP Ограничить тип файла
Приведенный ниже код позволяет загружать только файлы JPG, JPEG, PNG и GIF. Все остальные
типы файлов дают сообщение об ошибке перед установкой $uploadOk
в 0
:
// Разрешить определенные форматы файлов
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Извините, разрешено только файлы JPG, JPEG, PNG и GIF .";
$uploadOk = 0;
}
PHP Полная загрузка файла скрипта
Полный файл "upload.php" выглядит так:
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType =
strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Проверьте, является ли файл изображения фактическим изображением или поддельным изображением
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "Файл является изображением - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "Файл не является изображением.";
$uploadOk = 0;
}
}
// Проверить, существует ли файл
if (file_exists($target_file)) {
echo "Извините, файл уже существует.";
$uploadOk = 0;
}
// Проверить размер файла
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Извините, ваш файл слишком большой.";
$uploadOk = 0;
}
// Разрешить определенные форматы файлов
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Извините, разрешено только файлы JPG, JPEG, PNG и GIF.";
$uploadOk = 0;
}
// Проверьте, имеет ли $uploadOk значение 0 по ошибке
if ($uploadOk == 0) {
echo "Извините, ваш файл не был загружен.";
// если все в порядке, попробуйте загрузить файл
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "Файл ". basename( $_FILES["fileToUpload"]["name"]). " был загружен.";
} else {
echo "К сожалению, произошла ошибка при загрузке файла.";
}
}
?>
PHP Полный справочник файловой системы
Для полной справки функций файловой системы, перейдите к полному PHP Справочник файловой системы.