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