php

Як завантажити файли на сервер за допомогою 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 />';
                   }
               }
            }
        }
    }
}
author
Автор: Ігор Рибалко
Працюю фронтенд розробником з 2014 року. Основний стек технологій - Vue.js і WordPress

Схожі записи:

  • Як надіслати дані HTML-форми на email за допомогою PHP
    Відправка форми на електронну пошту є важливим і поширеним способом спілкування з користувачем веб-ресурсу. Давайте напишемо просту форму для відпправки даних на email за...
  • Кешування даних у файл за допомогою PHP
    Іноді виникає необхідність обмежити кількість запитів до зовнішнього джерела даних, особливо коли дані змінюються нечасто. Наприклад, це може бути корисним під час роботи...
  • Ітерація елементів масиву без циклу
    Приклади дуже абстрактні, оскільки цикли існують. Наша умова буде такою. Потрібно вибрати всі елементи масиву за заданим атрибутом. Або, якщо сказати точніше, потрібно ві...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Blue Captcha Image
Refresh

*