Як завантажити файли на сервер за допомогою PHP
Last updated: 21.02.2026
Views: 209
Завантаження файлів на веб-сайт є звичайним завданням. Розглянемо можливість завантаження файлів на сервер PHP за допомогою методу POST. Для цього знадобиться форма з типом поля “file” і атрибут enctype зі значенням multipart/form-data. Ми не будемо використовувати AJAX у цьому прикладі, а виконаємо звичайне надсилання HTML форми.
HTML
<form method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
<input type="file" name="uploaded_file">
<input type="submit" name="submit" value="send">
</form>
Поле з name=”MAX_FILE_SIZE” має бути розташоване над input type=”file”, значення встановлюється в байтах. Поле необов’язкове, і перевірка все ще має бути на сервері. Після надсилання дані завантаженого файлу потрапляють у масив $_FILES
PHP
if (isset($_FILES["uploaded_file"])) { // field´s name type="file"
$maxsize = 1024 * 1024* 2; // limited the allowed file size to 2 MB
$errors = [];
// valid file extensions
$acceptable = [
'application/pdf',
'image/jpeg',
'image/jpg',
'image/gif',
'image/png'
];
if (is_uploaded_file($_FILES['uploaded_file']['tmp_name'])) {
if (($_FILES['uploaded_file']['size'] >= $maxsize) || ($_FILES["uploaded_file"]["size"] == 0)) {
$errors[] = 'File too large. File must be less than 2 megabytes.';
}
if (!in_array($_FILES['uploaded_file']['type'], $acceptable) && (!empty($_FILES["uploaded_file"]["type"]))){
$errors[] = 'Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.';
}
if (!count($errors)) {
$uploaddir = __DIR__ . '/upload/'; // upload folder
$uploadfile = $uploaddir . $_FILES['uploaded_file']['name'];
move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $uploadfile);
} else {
foreach($errors as $error) {
echo $error . '<br />';
}
}
}
}
Ви можете завантажити кілька файлів одночасно. PHP підтримує можливість передачі масиву HTML, включаючи файли.
HTML
<form method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="2097152" />
<input type="file" name="pictures[]">
<input type="file" name="pictures[]">
<input type="file" name="pictures[]">
<input type="submit" name="submit" value="send">
</form>
PHP
if (isset($_FILES["pictures"])) { // field´s name type="file"
$maxsize = 1024 * 1024* 2; // limited the allowed file size to 2 MB
$errors = [];
// valid file extensions
$acceptable = [
'application/pdf',
'image/jpeg',
'image/jpg',
'image/gif',
'image/png'
];
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
if (is_uploaded_file($_FILES['pictures']['tmp_name'][$key])) {
if (($_FILES['pictures']['size'][$key] >= $maxsize) || ($_FILES["pictures"]["size"][$key] == 0)) {
$errors[] = 'File too large. File must be less than 2 megabytes.';
}
if (!in_array($_FILES['pictures']['type'][$key], $acceptable) && (!empty($_FILES["pictures"]["type"][$key]))){
$errors[] = 'Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.';
}
if (!count($errors)) {
$uploaddir = __DIR__ . '/upload/'; // upload folder
$uploadfile = $uploaddir . $_FILES['pictures']['name'][$key];
move_uploaded_file($_FILES['pictures']['tmp_name'][$key], $uploadfile);
} else {
foreach($errors as $error) {
echo $error . '<br />';
}
}
}
}
}
}
Схожі записи:
-
Як надіслати дані HTML-форми на email за допомогою PHP
Відправка форми на електронну пошту є важливим і поширеним способом спілкування з користувачем веб-ресурсу. Давайте напишемо просту форму для відпправки даних на email за...
-
Кешування даних у файл за допомогою PHP
Іноді виникає необхідність обмежити кількість запитів до зовнішнього джерела даних, особливо коли дані змінюються нечасто. Наприклад, це може бути корисним під час роботи...
-
Ітерація елементів масиву без циклу
Приклади дуже абстрактні, оскільки цикли існують. Наша умова буде такою. Потрібно вибрати всі елементи масиву за заданим атрибутом. Або, якщо сказати точніше, потрібно ві...
Залишити відповідь