Як завантажити файли на сервер за допомогою PHP
Last updated: 21.02.2026
Views: 123
Завантаження файлів на веб-сайт є звичайним завданням. Розглянемо можливість завантаження файлів на сервер 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 за...
-
Виправлення URL зображення в ACF (Advanced Custom Fields)
Плагін ACF (Advanced Custom Fields) – це чудовий та зручний інструмент для розширення функціональності WordPress. ACF дозволяє додавати користувацькі поля до адміністрати...
-
Кешування даних у файл за допомогою PHP
Іноді виникає необхідність обмежити кількість запитів до зовнішнього джерела даних, особливо коли дані змінюються нечасто. Наприклад, це може бути корисним під час роботи...
Залишити відповідь