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 українською.