Надсилання файлів на сервер. Завантаження файлів за допомогою PHP Як завантажити файл php

Сьогодні я хочу розповісти вам про різноманітні ситуації, пов'язані із завантаженням файлів на сервер за допомогою PHP-скриптів. Намагаюся навести приклади, як найпростішого завантаження файлу, так і мультизавантаження із застосуванням move uploaded file PHP .

Щоб завантажити файли на сервер. Насамперед, потрібно створити HTML-форму з полем file input . Потім прив'язати до неї PHP-скрипт, який перемістить файл у вказану директорію. Щоб завантажити файл на сервер за допомогою PHP-скрипта, виконайте такі дії:

  1. Створіть просту HTML-форму: потрібна проста форма з можливістю вказівки файлу. Вона розміщується у файлі basic.php :

Basic File Upload

Basic File Upload


Наведений вище код необхідний створення форми. Як тільки користувач вибирає файл і натискає кнопку Upload , форма передасть дані за допомогою методу POST на цій же сторінці, тому що як обробник зазначений файл basic.php :

Важливо: не забудьте додати enctype=”multipart/form-data” у тег

.

  1. Створюємо PHP-скрипт для обробки форми завантаження. У PHP вся інформація про завантажені файли міститься в глобальній змінній $_FILES . Тобто, використовуючи $_FILES , можна перевірити, чи завантажено файл. Якщо файл був завантажений, можна перемістити його в потрібну директорію за допомогою функції move_uploaded_file PHP :

Наведений вище код перевіряє, чи файл завантажив користувач. Якщо файл завантажено, ми переміщуємо файл у вказану директорію. У наведеному вище скрипті ми переміщуємо файл до тієї ж папки, де знаходиться файл basic.php .

Нижче наведено повну версія PHP move uploaded file прикладу:

Basic File Upload

Basic File Upload


Будь ласка, не тестуйте цей PHP move uploaded file приклад на сервері. Він не відповідає вимогам безпеки, і був створений спеціально для того, щоб показати, як завантажувати файли за допомогою PHP .

Запитання: Чому наведений вище скрипт небезпечний?
Відповідь: За допомогою скрипта, наведеного вище, можна завантажити будь-який файл на сервер. Тобто, якщо ви використовуєте скрипт у такому вигляді на "живому" сервері, то будь-який хакер зможе завантажити власні PHP-скрипти і зламати ваш сайт і сервер.

Трохи згодом ми докладніше поговоримо про захист скрипта для завантаження файлів на сервер.

Що таке $_FILES?

$_FILES – це глобальна змінна в PHP на кшталт $_POST або $_GET. Вона є асоціативним масивом, в якому знаходиться інформація про завантажений файл за допомогою методу HTTP POST .

Тобто, якщо виконати print_r($_FILES) для наведеного вище скрипта, ми отримаємо таку інформацію:

Array ( => Array ( => upload-file-php.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

Тобто для кожного поля у масиві створюється елемент. Якщо ви створите , назва елемента також буде змінено на test . Наприклад:

Array ( => Array ( => upload-file-php.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpcQiYhh => 0 => 6887))

Тепер для кожного input file, що переміщується за допомогою move uploaded file PHP, створюється п'ять елементів ( name, type, tmp_name, error, size). Давайте познайомимося з цими елементами ближче:

  1. name: містить назву завантаженого файлом користувача. Якщо ви завантажите файл abc.txt у браузер, елемент name отримає назву abc.txt ;
  2. type: тип завантаженого файлу або mime-type, якщо точніше. Для файлу JPGцей елемент матиме значення image/jpeg. Якщо завантажити текст, елемент отримає значення text/plain . Для різних типівфайлів різним буде і mime-type. Нижче наведені найпоширеніші mime-типи:
  • JPEG: image/jpeg;
  • PNG: image/png;
  • Текст: text/plain;
  • Word: application/msword.
  1. tmp_name: тимчасове розташування завантаженого файлу. Цей шлях можна змінити у змінній upload_tmp_dir, вказаній у файлі php.ini.
  1. error: інформація про помилку. Включає тип помилки, що виникла в процесі завантаження. Наприклад, коли розмір файлу перевищує максимальний або коли файл не було завантажено. Для будь-якої помилки є числове значення і константа. Нижче наведено повний списокпомилок, які можуть виникнути в PHP move uploaded file прикладі:
  • UPLOAD_ERR_OK (значення 0). Означає, що файл успішно завантажено без помилок;
  • UPLOAD_ERR_INI_SIZE (значення 1). Розмір файлу перевищує вказаний у змінній upload_max_filesize у файлі php.ini;
  • UPLOAD_ERR_FORM_SIZE (значення 2). Розмір файлу перевищує встановлене змінної форми MAX_FILE_SIZE значення;
  • UPLOAD_ERR_PARTIAL (значення 3). Файл завантажений повністю;
  • UPLOAD_ERR_NO_FILE (значення 4). Немає файлу для завантаження;
  • UPLOAD_ERR_NO_TMP_DIR (значення 6). Вказаної директорії для тимчасового зберігання не існує;
  • UPLOAD_ERR_CANT_WRITE (значення 7). Неможливо записати файл на диск.
  1. size: розмір завантаженого файлу у байтах.

Що таке move_uploaded_file?

move_uploaded_file є функцією, яка переміщує завантажений файл з тимчасової директорії в папку призначення. Перед переміщенням move_uploaded_file PHP перевіряє, чи завантажено файл, вказаний у HTTP-методі post .

Якщо файл був успішно переміщений, ви отримаєте відповідь true або false . У першому прикладі ми використали наступний рядок коду:

move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir)

А тепер давайте зробимо красиво і виведемо інформацію:

if(move_uploaded_file($_FILES["inputfile"]["tmp_name"], $destiation_dir))( echo "File Uploaded" ) else( echo "File Not uploaded" )

Змінюємо ліміт розміру файлу, що завантажується

У кожної форми для завантаження файлів повинен бути встановлений ліміт розміру, інакше користувачі завантажуватимуть важкі файли. Виставити обмеження на move uploaded file PHP можна двома способами:

  • У файлі PHP.ini є спеціальна змінна upload_max_filesize , яка відповідає за максимальний розмір файлів, що завантажуються. Далі наведений рядок з php.ini , яка обмежує розмір файлів, що завантажуються до 20 Мб: upload_max_filesize = 20M .
  • Якщо завантажуваний файл матиме більший розмір, користувач отримає помилку UPLOAD_ERR_INI_SIZE або значення «2» в змінній $_FILES . Важливо врахувати, що значення змінної upload_max_filesize має перевищувати значення змінної post_max_size , вказаної в php.ini ;
  • Обмежити розмір файлу, що завантажується, можна, помістивши прихований елемент введення з назвою UPLOAD_ERR_INI_SIZE у форму завантаження. Зробити це можна так: .

Якщо потрібно сильно збільшити filesize, то не забудьте змінити час виконання php-скриптів.

Як убезпечити PHP-скрипт завантаження файлів

Тепер ви вмієте обмежувати розмір файлів, що завантажуються, і знаєте, як визначити типи файлів, які завантажують користувачі. Настав час подбати про безпеку нашого PHP move uploaded file прикладу.

Як приклад зробимо так, щоб користувачі не могли завантажувати jpeg-файли розміром понад 1 Мб. Встановіть відповідне обмеження у змінній upload_max_filesize файлу php.ini. Нижче наведено покращену версію скрипта:

Secure File Upload

Secure File Upload


Мультизавантаження файлів за допомогою PHP-скрипту

Можна завантажувати кілька файлів за допомогою $_FILES і move_uploaded_file PHP . Нижче я розповім вам про два способи мультизавантаження файлів за допомогою PHP-скрипту:

  1. Використовуючи різні імена Input.
  2. Використовуючи те саме ім'я input, але із залученням масиву.

1. Використовуючи різні імена Input:

Можна завантажувати кілька файлів, використовуючи кілька елементів введення. Як вже говорилося раніше, якщо ми створюємо кілька елементів input, то $_FILES буде створено кілька основних елементів. Наприклад, для наведеної нижче форми:

$_FILES представить масив такого змісту:

Array ( => Array ( => 20141002_094257.jpg => image/jpeg => /Applications/XAMPP/xamppfiles/temp/phpoBWrBZ => 0 => 2669096) => Array ( => 20141002_09> > /Applications/XAMPP/xamppfiles/temp/phpjwUmVZ => 0 => 2207657))

Наведений нижче PHP move uploaded file приклад потрібно писати з урахуванням того, що один елемент призначений для аватарки (зображення), а інший – для завантаження резюме ( файлу у форматі .doc):

Multiple File Upload

Multiple File Upload



На PHP часто потрібне завантаження файлів на сервер ... приємно ж, якщо ваш сайт має можливість завантажувати файли на сайт: картинки або інші текстові файлиабо інші формати...поговоримо в цій статті про це...

Отже, нам потрібно навчитися завантажувати файл на сервер за допомогою PHP. Для цього нам потрібно знати, що такі завантаження відбуваються за допомогою простої multipart-форми, яка має спеціальне поле для завантаження файлу.




Як параметр enctype у такій формі потрібно вказувати значення multipart/form-data. Вирушає методом POST.

Як обробляти multipart-форми на PHP

Після натискання кнопки "Завантажити" PHP поміщає файл у тимчасову директорію та задає файлу тимчасове ім'я (воно відрізняється від завантажуваного – нижче буде видно). І відразу створюється 4 змінних глобального масиву $_FILES:

  • $_FILES["uploadfile"]["name"]- Ім'я файлу до його відправки на сервер (тобто оригінальне);
  • $_FILES["uploadfile"]["size"]- Розмір прийнятого файлу в байтах;
  • $_FILES["uploadfile"]["type"]- MIME-тип прийнятого файлу (якщо браузер зміг його визначити), наприклад: image/gif, image/png, image/jpeg, text/html;
  • $_FILES["uploadfile"]["tmp_name"]- містить ім'я файлу у тимчасовому каталозі, наприклад: /tmp/php57Opq2Y;
  • $_FILES["uploadfile"]["error"] - Код помилки, яка може виникнути під час завантаження файлу. Ключ ["error"]був доданий до PHP 4.2.0.

Зверніть увагу: після закінчення роботи скрипта завантаження файлу на сервер - тимчасовий файл буде видалений, тому необхідно скопіювати цей файл з тимчасової директорії в якусь папку, наприклад files за допомогою функції copy(); Не потрібно застосовувати функцію move(), так як у copy в цей момент є 2 переваги: ​​тимчасовий файл самостійно видалитись, і якщо тимчасовий каталог знаходиться на іншому носії - то виведеться помилка.

Підказка: процес повинен починатися за умовою натискання кнопки "Завантажити", тобто до прикладу: if($_POST["submit"])(то виконуй дії)

Картинка, яка наочно покаже 4 створені змінні глобального масиву $_FILES:

Я думаю тепер все у вас прояснилося, що куди потрапляє і що де створюється ... і далі маніпулюю цими полями, можемо почати працювати з цією формою на php

Приблизно так може виглядати сам скрипт:

if($_POST["submit"])(
@mkdir("files", 0777); // створюємо папку, якщо її немає, то помилки не буде, задаємо права

/*echo "

";
print_r($_FILES);
echo "
";*/
$uploaddir = "files/";
$uploadfile = $uploaddir.basename($_FILES["uploadfile"]["name"]);

If(copy($_FILES["uploadfile"]["tmp_name"], $uploadfile))(
echo "

Файл успішно завантажено на сервер

";
)else(
echo "

Неможливо завантажити файл на сервер

";
exit;
}

//Дані про завантажений файл
echo "

Інформація про завантажений на сервер файл:

";
echo "

Оригінальне ім'я завантаженого файлу: ".$_FILES["uploadfile"]["name"]."

";
echo "

Mime-тип завантаженого файлу: ".$_FILES["uploadfile"]["type"]."

";
echo "

Розмір завантаженого файлу в байтах: ".$_FILES["uploadfile"]["size"]."

";
echo "

Тимчасове ім'я файлу: ".$_FILES["uploadfile"]["tmp_name"]."

";
}

Ось так і відбувається процес завантаження файлу на сервер засобами PHP.

Сподіваюся, було комусь корисно!

Останнє оновлення: 1.11.2015

Щоб завантажити файл на сервер, нам потрібно використовувати форму з параметром enctype="multipart/form-data" та масив $_FILES . Отже, створимо файл upload.phpз наступним вмістом:

завантаження файлу

Виберіть файл:

Тут визначено форми з атрибутом enctype="multipart/form-data" . Форма містить спеціальне поле для вибору файлу.

Всі файли, що завантажуються, потрапляють в асоціативний масив $_FILES. Щоб визначити, чи є взагалі завантажені файли, можна використовувати конструкцію if: if ($_FILES)

Масив $_FILES є двовимірним. Ми можемо завантажити набір файлів, і кожен завантажений файл можна отримати за ключом, який збігається з атрибутом name .

Оскільки елемент завантаження файлу на формі має name="filename" , то даний файлми можемо отримати за допомогою виразу $_FILES["filename"].

Кожен об'єкт файлу має свої параметри, які ми можемо отримати:

    $_FILES["file"]["name"] : ім'я файлу

    $_FILES["file"]["type"] : тип вмісту файлу, наприклад, image/jpeg

    $_FILES["file"]["size"] : розмір файлу в байтах

    $_FILES["file"]["tmp_name"] : ім'я тимчасового файлу, збереженого на сервері

    $_FILES["file"]["error"] : код помилки під час завантаження

Також ми можемо перевірити наявність помилок під час завантаження. Якщо у нас немає помилки, поле $_FILES["filename"]["error"] містить значення UPLOAD_ERR_OK .

При надсиланні файлу на сервер він спочатку завантажується в тимчасове місце, з якого потім за допомогою move_uploaded_file() він переміщається в каталог сервера.

Функція move_uploaded_file() приймає два параметри шлях до завантаженого тимчасового файлу та шлях, куди треба помістити завантажений файл.

Обмеження та налаштування завантаження

За замовчуванням розмір файлів, що завантажуються, обмежений 2 мб. Однак цей параметр можна настроїти у файлі конфігурації. Змінимо цей показник, наприклад, до 10 мегабайт. Для цього знайдемо у файлі php.iniнаступний рядок:

Upload_max_filesize = 2M

Змінимо її на

Upload_max_filesize = 10M

Також ми можемо налаштувати папку для тимчасових файлів, що завантажуються. Для цього у файлі php.iniзнайдемо наступний рядок:

;upload_tmp_dir =

Змінимо її на

Upload_tmp_dir = "C:/php/upload"

Також у каталозі php нам треба створити папку upload.

Мультизавантаження

Змінимо скрипт upload.phpтак, щоб він підтримував множину завантаження:

$error) ( if ($error == UPLOAD_ERR_OK) ( $tmp_name = $_FILES["uploads"]["tmp_name"][$key]; $name = $_FILES["uploads"]["name"][$ key]; move_uploaded_file($tmp_name, "$name"); ) ) ) ?>

завантаження файлу




Кожне поле вибору файлу має атрибут name="uploads" , тому сервер розглядатиме набір відправлених файлів як єдиний масив.

Потім використовуючи цикл foreach, проходимо по всіх файлах і зберігаємо їх у каталог веб-сайту.

Сьогодні сервіс із завантаження файлу на сервер (хостинг) зустрічається на всіх сайтах соціальних мереж, Дошках оголошень, сайтах знайомств та ін. Суть його полягає в тому, щоб дати можливість відвідувачу веб ресурсу опублікувати свої файли (фото, документи) на просторах інтернету.

При наданні даного сервісує один суттєвий мінус. Справа в тому, що дозволяючи завантажувати файл на свій сервер, ми встановлюємо двері, за якою необхідний постійний контроль. Так як у файлі відвідувача може бути не тільки корисна інформація, а й вірусний код, який згодом може дати можливість зловмисникам заволодіти вашим сервером. Зважаючи на цей мінус, необхідно ретельно перевіряти файли до завантаження на сервер.

Але не буду вас залякувати, а краще представлю вашій увазі готову функцію (PHP скрипт) для перевірки і завантаження файлів на сервер. Функція 100% робоча. Я сам використовую її на своїх веб-сайтах. Ця функціянаписана під завантаження файлів зображень (фоток) у форматі .jpg, .gif, .png. Але за бажання можна внести зміни, щоб адаптувати PHP скриптпід свої потреби.

У php скрипті реалізовано дві перевірки:

  1. так як хостер обмежує розмір файлу, що завантажується (на момент написання даного матеріалу у мене на хостингу стоїть обмеження в 8 Mb), то перевірка максимального розміру необхідна;
  2. Перевірка розширення файлу дозволяє відсіяти непотрібні файли перед завантаженням.

Сподіваюся, у коді функції достатньо пояснень, щоб розібратися із завантаженням файлу на сервер. Але якщо виникнуть питання, із задоволенням відповім у коментарях.

Тепер про те, як це реалізувати практично

Поміщаємо PHP код функції в окремий файл: function.php та розміщуємо його на сервері у кореневому каталозі.

І створимо html-файл, в якому розмістимо форму для завантаження фото: index.html

upload.php - файл обробник форми
name="button" - ім'я кнопки, при натисканні на яку запускається функція завантаження файлу на сервер

Завантаження кількох файлів

Тепер розберемо випадок, коли потрібно завантажити на сервер відразу кілька файлів.
Для цього нам знадобиться у файлах function.php upload.php та index.html зробити деякі зміни.





Мабуть, це все, що вам необхідно для реалізації сервісу по завантаженню файлу користувача на сервер (хостинг).

Ще одна функція, яка тісно пов'язана із завантаженням графічних файлів (фоток) – це функція для зміни розмірів фотки:

Multipart-форми

  • Веб-інтерфейси поштових сервісів, які дозволяють додавати до листа додаток (attach), а для цього потрібно спочатку завантажити файл на сервер, і тільки після цього його можна додавати до листа;
  • Інтерактивні фотогалереї та фотоальбоми, які не можуть існувати без механізму завантаження файлів на сервер;
  • Портали безкоштовного програмного забезпечення, які використовують для обміну файлами різних програм, тощо.

Завантаження файлу на сервер здійснюється за допомогою multipart-форми, в якій є поле завантаження. Як параметр enctype вказується значення multipart/form-data :



Ось так приблизно виглядатиме наведена multipart-форма (ви можете спробувати з її допомогою подивитися результат роботи multipart-форм, завантаживши якийсь файл невеликого розміру на сервер):

Multipart форми зазвичай використовують метод передачі POST. Як видно з попереднього прикладу, ця форма має два поля:

  • Поле вибору файлу для завантаження ;
  • Поле вказівки імені файлу, яке він повинен мати на сервері .

Обробка multipart-форм

Перш ніж приступити до написання скрипта обробки multipart-форми, потрібно відредагувати файл конфігурації php.ini, щоб дозволити завантаження файлів на сервер.

Конфігураційний файл PHP php.ini має три параметри, пов'язані із завантаженням файлів на сервер:

  • file_uploads = On - дозволяє завантаження файлів на сервер за протоколом HTTP;
  • upload_tmp_dir=/tmp – встановлює каталог для тимчасового зберігання завантажених файлів;
  • upload_max_filesize=2M - встановлює максимальний обсяг файлів, що завантажуються.

Якщо ваш веб-сервер працює під керуванням операційної системи Linux, потрібно перезапустити сервіс:

service httpd restart

Як PHP обробляє multipart-форми? Отримавши файл, він зберігає його у тимчасовому каталозі upload_tmp_dir, ім'я файлу вибирається випадковим чином. Потім він створює чотири змінні суперглобального масиву $_FILES. Цей масив містить інформацію про завантажений файл.

Змінні, визначені для завантажених файлів, залежать від версії PHP та поточної конфігурації. Суперглобальний масив $_FILES доступний з PHP 4.1.0. Якщо конфігураційна директива register_globals встановлена ​​значенням on, додатково буде оголошено змінні з відповідними іменами. Починаючи з версії 4.2.0 значенням за промовчанням для опції register_globals є off.

Вміст масиву $_FILES для нашого прикладу наведено нижче. Зверніть увагу, що тут передбачається використання імені uploadfile для поля вибору файлу відповідно до наведеної вище multipart-форми. Зрозуміло, ім'я поля може бути будь-яким.

  • $_FILES["uploadfile"]["name"] - ім'я файлу до його відправки на сервер, наприклад, pict.gif;
  • $_FILES["uploadfile"]["size"] - розмір прийнятого файлу в байтах;
  • $_FILES["uploadfile"]["type"] - MIME-тип прийнятого файлу (якщо браузер зміг його визначити), наприклад: image/gif, image/png, image/jpeg, text/html;
  • (Так ми назвали поле завантаження файлу) - містить ім'я файлу в тимчасовому каталозі, наприклад: /tmp/phpV3b3qY;
  • $_FILES["uploadfile"]["error"] -Код помилки, яка може виникнути під час завантаження файлу. Ключ ["error"]був доданий до PHP 4.2.0. З відповідними кодами помилок ви можете ознайомитись

Після завершення роботи скрипта тимчасовий файл буде видалено. Це означає, що ми повинні скопіювати його в інше місце до завершення роботи скрипта. Тобто алгоритм роботи сценарію завантаження файлу на сервер такий:

Якщо кнопка "Submit" натиснута, файл вже буде завантажений на сервер і його ім'я будуть в змінній $_FILES["uploadfile"]["name"] . В цьому випадку скрипт повинен відразу скопіювати файл з ім'ям $_FILES["uploadfile"]["tmp_name"]в якийсь каталог (потрібні права на запис у цей каталог).

Копіювання файлу виконується функцією copy() :

Використовуйте лише функцію копіювання copy() , а не переміщення, оскільки:

  • Тимчасовий файл буде видалено автоматично;
  • Якщо тимчасовий каталог знаходиться на іншому носії, буде виведено повідомлення про помилку.

Припустимо, нам потрібно завантажити файл у каталог uploads, який знаходиться у кореневому каталозі веб-сервера (у каталозі DocumentRoot).

// Про всяк випадок створимо каталог. Якщо його вже створено,
// повідомлення про помилку ми не побачимо, оскільки скористаємося оператором @:

@mkdir("uploads", 0777);

// Копіюємо файл з /tmp в uploads
// Ім'я файлу буде таким самим, як і до відправки на сервер:

Copy($_FILES["uploadfile"]["tmp_name"],"uploads/".basename($_FILES["uploadfile"]["name"]));

У Linux все набагато складніше - нам потрібно враховувати права доступу до каталогу uploads. Швидше за все в такому разі, функція mkdir()не спрацює, тому що у нас немає прав на запис у каталог DocumentRoot (зазвичай це /var/www/html або /home/httpd/html). Зареєструйтесь в системі як користувач root , створіть каталог uploads та змініть його власника та права доступу таким чином:

// Створюємо каталог uploads

// Встановлюємо ім'я власника apache та його групу – теж apache:

Chown apache:apache uploads

// Роздільна здатність запису всім (777) + установка закріплюючого біта (1):

Chmod 1777

Розмір файлу можна обмежити, за бажання можна відредагувати файл .htaccess і обмежити доступ до каталогу uploads - вказати або конкретних користувачів, яким можна звертатися до каталогу, або IP-адреси.

Тепер можна завантажувати файли на сервер.

Пишемо PHP скрипт завантаження файлів на сервер


// Каталог, в який ми прийматимемо файл:
$uploaddir = "./files/";
$uploadfile=$uploaddir. basename ($_FILES ["uploadfile"]["name"]);

// Копіюємо файл з каталогу для тимчасового зберігання файлів:
if (copy ($ _FILES [ "uploadfile" ][ "tmp_name" ], $ uploadfile ))
{
echo "

Файл успішно завантажено на сервер

" ;
}
else ( echo "

Помилка! Неможливо завантажити файл на сервер!

"
; exit; )

// Виводимо інформацію про завантажений файл:
echo "

Інформація про завантажений на сервер файл:

"
;
echo "

Оригінальне ім'я завантаженого файлу: ".$ _FILES [ "uploadfile" ][ "name" ]. "

" ;
echo "

Mime-тип завантаженого файлу: ".$ _FILES [ "uploadfile" ][ "type" ]. "

" ;
echo "

Розмір завантаженого файлу в байтах: ".$ _FILES [ "uploadfile" ][ "size" ]. "

" ;
echo "

Тимчасове ім'я файлу: ".$ _FILES [ "uploadfile" ][ "tmp_name" ]. "

" ;

?>

Завантаження кількох файлів можна реалізувати, використовуючи, наприклад, різні значення name для тега input .

Також передбачена можливість автоматичного отримання організованої в масив інформації про кілька файлів, що одночасно завантажуються. Для реалізації такої можливості використовуйте той же синтаксис відправки масиву з HTML-форми, що і для багатьох полів select і checkbox:


Написати ці файли:






У випадку, якщо така форма була відправлена, масиви $_FILES["userfile"] , $_FILES["userfile"]["name"] , і $_FILES["userfile"]["size"] будуть ініціалізовані (так само , як і $HTTP_POST_FILES для PHP 4.1.0 та ранніх версій). Якщо конфігураційна директива register_globals встановлена ​​на on , також будуть ініціалізовані супутні глобальні змінні. Кожна з таких змінних буде чисельно індексованим масивом відповідних значень для прийнятих файлів.

Припустимо, що були завантажені файли /home/test/some.html та /home/test/file.bin . У такому разі змінна $_FILES["userfile"]["name"] матиме значення some.html , а змінна $_FILES["userfile"]["name"] - значення file.bin . Аналогічно, змінна $_FILES["userfile"]["size"] міститиме розмір файлу some.html і так далі.

Змінні $_FILES["userfile"]["name"] , $_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["size"] та $_FILES["userfile"]["type"] також будуть ініціалізовані.

Висновок:

Як бачите, організувати завантаження файлів на сервер не так складно. Складніше забезпечити необхідний рівень безпеки, оскільки завантаження файлів сервер може використовуватися зловмисниками для атаки на сервер. Про те, як забезпечити необхідний рівень безпеки, працюючи з Uploads дивіться .



<<< Назад Зміст Уперед >>>
Є ще питання чи щось незрозуміло – ласкаво просимо на наш
Телевізори