САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

PHP5 Учебник

PHP Главная PHP Введение PHP Установка PHP Синтаксис PHP Переменные PHP Echo/Print PHP Типы данных PHP Строки PHP Константы PHP Операторы PHP Заявления if...else PHP Заявления switch PHP Цикл while PHP Циклы for, foreach PHP Функции PHP Массивы PHP Сортировка массивов PHP Суперглобальные массивы

PHP Формы

PHP Обработка форм PHP Проверка форм PHP Поля форм PHP Проверка почты PHP Полная форма

PHP Продвинутый

PHP Мульти массивы PHP Дата и время PHP Подключение PHP Обработка файлов PHP Открыть файл PHP Создать файл PHP Загрузить файл PHP Файлы cookie PHP Проведение сессий PHP Фильтры PHP Расширенные фильтры PHP Обработка ошибок PHP Обработка исключений

MySQL

MySQL База данных MySQL Установить MySQL Создать БД MySQL Создать таблицу MySQL Вставить данные MySQL Получить ID MySQL Вставить записи MySQL Подготовленные MySQL Выбрать данные MySQL Удалить данные MySQL Обновить данные MySQL Лимит данных

PHP - XML

PHP XML Парсер PHP XML Анализатор PHP XML Вывод PHP XML Экспат PHP XML DOM

PHP - AJAX

AJAX Введение AJAX PHP AJAX База данных AJAX XML AJAX Живой Поиск AJAX RSS Считывание AJAX Опрос

PHP Примеры

PHP Примеры

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 Справочник файловой системы.