Учебник по PHP

PHP ГЛАВНАЯ Введение в PHP Установка PHP Синтаксис PHP Комментарии PHP PHP-переменные PHP-эхо/печать Типы данных PHP PHP-строки PHP-номера PHP-математика PHP-константы PHP-операторы PHP Если... Иначе... Иначе PHP-переключатель PHP-циклы PHP-функции PHP-массивы PHP-суперглобальные переменные PHP регулярное выражение

PHP- формы

Обработка форм PHP Проверка формы PHP Требуется PHP-форма URL-адрес формы PHP/электронная почта PHP-форма завершена

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

Дата и время PHP PHP включает Обработка файлов PHP Открытие/чтение файла PHP Создание/запись файла PHP Загрузка файла PHP PHP-куки PHP-сессии PHP-фильтры Расширенные фильтры PHP Функции обратного вызова PHP PHP JSON Исключения PHP

PHP ООП

PHP Что такое ООП PHP-классы/объекты PHP-конструктор PHP-деструктор Модификаторы доступа PHP Наследование PHP PHP-константы Абстрактные классы PHP PHP-интерфейсы Особенности PHP Статические методы PHP Статические свойства PHP Пространства имен PHP Итерации PHP

База данных MySQL

База данных MySQL Подключиться к MySQL MySQL Создать БД MySQL Создать таблицу Вставка данных MySQL MySQL Получить последний идентификатор MySQL Вставить несколько MySQL подготовлен Выбор данных MySQL MySQL Где Порядок MySQL MySQL Удалить данные Данные обновления MySQL Предельные данные MySQL

PHP XML

XML-парсеры PHP Парсер PHP SimpleXML PHP SimpleXML — Получить PHP XML Expat PHP XML DOM

PHP — АЯКС

Введение в АЯКС АЯКС PHP База данных AJAX АЯКС XML AJAX-поиск в реальном времени АЯКС-опрос

Примеры PHP

Примеры PHP PHP-компилятор PHP-викторина PHP-упражнения PHP-сертификат

Справочник по PHP

Обзор PHP PHP-массив Календарь PHP Дата PHP PHP-каталог Ошибка PHP PHP-исключение Файловая система PHP PHP-фильтр PHP FTP PHP JSON Ключевые слова PHP PHP-библиотека XML PHP-почта PHP-математика PHP Разное PHP MySQLi PHP-сеть Управление выводом PHP PHP регулярное выражение PHP SimpleXML PHP-поток PHP-строка Обработка переменных PHP XML-парсер PHP PHP-архив Часовые пояса PHP

Загрузка файла PHP


С PHP легко загружать файлы на сервер.

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


Настройте файл «php.ini»

Во-первых, убедитесь, что в PHP разрешена загрузка файлов.

В файле «php.ini» найдите file_uploadsдирективу и установите для нее значение «Вкл.»:

file_uploads = On

Создайте HTML-форму

Затем создайте HTML-форму, позволяющую пользователям выбирать файл изображения, который они хотят загрузить:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Некоторые правила, которым нужно следовать для HTML-формы выше:

  • Убедитесь, что форма использует метод = "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));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

Объяснение PHP-скрипта:

  • $target_dir = "uploads/" - указывает каталог, в который будет помещен файл.
  • $target_file указывает путь к загружаемому файлу
  • $uploadOk=1 еще не используется (будет использоваться позже)
  • $imageFileType содержит расширение файла (в нижнем регистре).
  • Затем проверьте, является ли файл изображения реальным изображением или поддельным изображением.

Примечание. Вам нужно будет создать новый каталог с именем «uploads» в каталоге, где находится файл «upload.php». Загруженные файлы будут сохранены там.


Проверить, существует ли уже файл

Теперь мы можем добавить некоторые ограничения.

Во-первых, мы проверим, существует ли уже файл в папке «uploads». Если это так, отображается сообщение об ошибке, а $uploadOk устанавливается в 0:

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Ограничить размер файла

Поле ввода файла в нашей HTML-форме выше называется «fileToUpload».

Теперь мы хотим проверить размер файла. Если файл больше 500 КБ, отображается сообщение об ошибке, а $uploadOk устанавливается равным 0:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Ограничить тип файла

Приведенный ниже код позволяет пользователям загружать только файлы JPG, JPEG, PNG и GIF. Все другие типы файлов выдают сообщение об ошибке перед установкой $uploadOk в 0:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $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));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Полный справочник по файловой системе PHP

Полный справочник по функциям файловой системы см. в нашем полном справочнике по файловой системе PHP .