НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

PHP Підручник

PHP СТАРТ PHP Інтро PHP Встановлення PHP Синтаксис PHP Коментарі PHP Змінні PHP Echo / Print PHP Типи даних PHP Рядки PHP Числа PHP Математика PHP Константи PHP Оператори PHP If...Else...Elseif PHP Switch PHP Цикли PHP Функції PHP Масиви PHP Суперглобали PHP RegEx

PHP Форми

PHP Обробка форми PHP Перевірка форми PHP Обов'язкові поля форми PHP Форма URL/E-mail PHP Заповнення форми

PHP Розширений

PHP Дата і час PHP Підключення файлів PHP Обробка файлів PHP Файл відкрити/читати PHP Файл створити/записати PHP Файл Завантажити PHP Кукі PHP Сесії PHP Фільтри PHP Розширені фільтри PHP Callback функції 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 Отримати останній ID MySQL Вставити кілька записів MySQL Підготовлені інструкції MySQL Вибрати дані MySQL Where MySQL Order By MySQL Видалення даних MySQL Оновлення даних MySQL Обмеження даних

PHP XML

PHP XML Парсери PHP SimpleXML Парсер PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Інтро AJAX PHP AJAX База даних AJAX XML AJAX Живий пошук AJAX Опитування

PHP Приклади

PHP Приклади PHP Компілятор PHP Вікторина PHP Вправи PHP Сертифікат

PHP Довідник

PHP Огляд PHP Масив PHP Календар PHP Дата PHP Каталог PHP Помилка PHP Виняток PHP Файлова система PHP Фільтр PHP FTP PHP JSON PHP Ключові слова PHP Libxml PHP Пошта PHP Математика PHP Різне PHP MySQLi PHP Мережа PHP Output Control PHP RegEx PHP SimpleXML PHP Потік PHP Рядок PHP Обробка змінних PHP XML Парсер PHP Zip PHP Часові пояси

PHP. W3Schools українською. Уроки для початківців

En

PHP Завантажити файл


За допомогою PHP легко завантажити файли на сервер.

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


Налаштувати файл "php.ini"

По-перше, переконайтеся, що PHP налаштовано для дозволу завантаження файлів.

У вашому файлі "php.ini" знайдіть директиву file_uploads і встановіть для неї значення On (тобто, вкл.):

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-форми вище:

  • Переконайтеся, що форма використовує method="post"
  • Формі також потрібен такий атрибут: enctype="multipart/form-data". Він визначає, який тип вмісту використовувати під час надсилання форми

Без зазначених вище вимог завантаження файлу не працюватиме.

Інші речі, на які варто звернути увагу:

  • Тип="file" атрибут тегу <input> показує поле введення як елемент керування вибором файлу з кнопкою "Browse" ("Огляд") поруч із елементом керування введенням

Форма вище надсилає дані у файл "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". Завантажені файли будуть збережені там.


Перевірити, чи файл уже існує

Тепер ми можемо додати деякі обмеження.

Спочатку ми перевіримо, чи файл уже існує в теці "uploads". Якщо це так, відображається повідомлення про помилку, а $uploadOk має значення 0:

// Перевірте, чи файл уже існує
if (file_exists($target_file)) {
  echo "Вибачте, файл уже існує.";
  $uploadOk = 0;
}

Обмеження розміру файлу

Поле введення файлу в нашій HTML-формі вище називається "fileToUpload".

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

// Перевірити розмір файлу
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Вибачте, ваш файл завеликий.";
  $uploadOk = 0;
}

Обмеження типу файлу

Наведений нижче код дозволяє користувачам лише завантажувати файли 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 "Файл ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " завантажено.";
  } else {
    echo "На жаль, під час завантаження файлу сталася помилка.";
  }
}
?>

Повний довідник файлової системи PHP

Щоб отримати повний довідник щодо функцій файлової системи, перейдіть до повного Довідника файлової системи PHP на нашому сайті W3Schools українською.