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

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

Радий бачити Вас на сторінках свого сайту. Сьогодні поговоримо про реалізацію завантаження файлів на сервер. Тема досить цікава тому багатьох новачків цікавить дане питання.

Завантаження файлів на сервер засобами PHP значно полегшить Вашу працю по наповненню фотогалереї або оформлення сторінки сайту за допомогою редактора (наприклад TinyMCE). Також Ви можете завантажувати будь-які типи файлів на сервер виходячи з Ваших завдань.

Для того щоб завантажити файл на сервер потрібно створити форму для завантаження файлів. В принципі дана форма не дуже сильно відрізняється від звичайної форми з текстовими полями, за винятком, що type буде не text, а file (Так як ми вантажимо файли) і в самій формі додасться атрибут enctype \u003d "multipart / form-data". Entype визначає вид кодування, яку браузер застосовує до параметрів форми.

PHP - Завантаження файлів на сервер своїми руками

Демо: Завантаження файлів на сервер

Завантажте ваші фотографії на сервер

Форму завантаження файлів ми зробили, саме час написати простий обробник для завантаження файлів на сервер. Визначимо відразу, що вантажити будемо тільки графічні файли з типом jpeg, png, gif. Після того як ми визначили типи файлів для завантаження на сервер, нам потрібно створити папку на самому сервері, куди ми будемо складати наші файли. У моєму прикладі це папка image, в неї ми будемо складати наші файли.

"Помилок не виникло, файл був успішно завантажений на сервер.", 1 \u003d\u003e "Розмір прийнятого файлу перевищив максимально допустимий розмір, який заданий директивою upload_max_filesize конфігураційного файлу php.ini.", 2 \u003d\u003e "Розмір завантаження перевищив значення MAX_FILE_SIZE, вказане в HTML-формі. ", 3 \u003d\u003e" Завантажуваний файл був отриманий тільки частково. ", 4 \u003d\u003e" Немає запису був завантажений. ", 6 \u003d\u003e" Відсутня тимчасова папка. Додано в PHP 4.3.10 і PHP 5.0.3 . "); // Визначаємо типи файлів для завантаження $ fileTypes \u003d array ( "jpg" \u003d\u003e "image / jpeg", "png" \u003d\u003e "image / png", "gif" \u003d\u003e "image / gif"); // Якщо натиснута кнопка завантажити if (isset ($ _ POST [ "upload"])) (// Перевіряємо порожні дані чи ні if (! Empty ($ _ FILES)) (// Перевіряємо на помилки if ($ _ FILES [ "files" ] [ "error"]\u003e 0) $ err \u003d $ errUpload [$ _ FILES [ "files"] [ "error"]]; // Перевірюємо тип файлу для завантаження if (! in_array ($ _ FILES [ "files"] [ " type "], $ fileTypes)) $ err \u003d" Даний тип файлу ". $ _FILES [" files "] [" type "]." не підходить для завантаження! "; // Якщо немає помилок то вантажимо файл if (empty ($ err)) ($ type \u003d pathinfo ($ _ FILES [" files "] [" name "]); $ name \u003d $ uploadDir." / ". uniqid (" files_ ").". ". $ type [" extension "]; move_uploaded_file ($ _ FILES [" files "] [" tmp_name "], $ name); // Скидаємо POST параметри header (" Location : http: // ". $ _SERVER [" HTTP_HOST "]." / less / uploads / uploads.php? name \u003d ". $ name); exit;) else echo implode ("
", $ Err);)) // Повідомлення про успішну завантаженні файлу на сервер if (isset ($ _ GET [" name "])) echo"

файл ". Htmlentities ($ _ GET [" name "])." успішно завантажений!

"; // Виводимо картинки з каталогу $ imgDir \u003d array_values \u200b\u200b(array_diff (scandir ($ uploadDir), array (" .. ",". "))); For ($ i \u003d 0; $ i< count($imgDir); $i++) { if($i % 2 == 0) echo "
"." \\ N "; echo" "." \\ N ";) echo"

"." \\ N "; echo" http: // ". $ _SERVER [" HTTP_HOST "]." ";?\u003e

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

; Максимальний час виконання кожного скрипта в секундах max_execution_time \u003d 3000; Максимальна кількість часу кожен сценарій може витратити розбору запиту даних max_input_time \u003d 400; Максимальний обсяг пам'яті, скрипт може споживати (8 МБ) memory_limit \u003d 500M; Максимальний розмір даних POST, що PHP буде приймати. post_max_size \u003d 500M; Максимально допустимий розмір для завантаження. upload_max_filesize \u003d 200M

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

вимоги

Завантажити файли на сервер не складно, але є кілька дрібних деталей, які повинні бути враховані, інакше завантаження не буде виконана. По-перше, ви повинні переконатися, що PHP налаштований на дозвіл завантаження. перевірте ваш php.ini файл і перевірте директиву file_uploads, яка повинна бути встановлена \u200b\u200bв On.

Після того як Ви налаштували конфігурації дозволяють сервера приймати завантажені файли, Ви можете акцентувати вашу увагу на HTML складової. Для завантаження файлів з боку HTML застосовуються форми. Вкрай важливо, щоб ваші форми використовували метод POST і для атрибута enctype мали значення multipart / form-data.

<form action \u003d "upload.php" method \u003d "post" enctype \u003d "multipart / form-data"\u003e

Написання сценарію для процесу завантаження

Процес завантаження файлу в загальних рисах виглядає так:

  • Відвідувач переглядає HTML сторінку з формою для завантаження файлів;
  • Відвідувач вибирає в формі файл, який він хоче завантажити;
  • Браузер кодує файл і відправляє його в якості частини POST запиту;
  • PHP отримує форму подання, декодує файл і зберігає його в тимчасовий каталог на сервері;
  • Далі PHP скрипт переміщує файл на постійне місце зберігання.

Отже для того щоб відвідувач зміг завантажити файл необхідна HTML-форма, яка буде надана користувачеві і PHP скрипт, щоб піклуватися про завантаження файлів на сервер.

HTML форма

HTML форми забезпечують інтерфейс, через який користувач ініціює завантаження файлів. Пам'ятайте, form елемент повинен мати method \u003d POST і не повинен кодувати дані при відправці на сервер - атрибут enctype в значення multipart / form-data. Маємо в своєму розпорядженні елемент input для вибору файлу. Як і для будь-якого іншого елемента форми, нам дуже важливо вказати значення атрибута name, щоб можна було посилатися на нього в PHP сценарії, який обробляє форму.

Форма завантаження файлів виглядає наступним чином:

1
2
3
4
5






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

PHP сценарій завантаження

Інформація про завантаження розташовується в багатовимірному масиві $ _FILES. Цей масив індексується по іменах файлів поміщених в поле HTML форми. Масив містить наступну інформацію про кожен файл:

  • $ _FILES [ «myFile»] [ «name»] - вихідне ім'я файлу;
  • $ _FILES [ «myFile»] [ «type»] - MIME-тип файлу;
  • $ _FILES [ «myFile»] [ «size»] - розмір файлу (в байтах);
  • $ _FILES [ «myFile»] [ «tmp_name»] - ім'я тимчасового файлу;
  • $ _FILES [ «myFile»] [ «error»] - код будь-якої помилки при передачі.

Функція move_uploaded_file () переміщує завантажений файл з тимчасового в постійне місце. Вам слід завжди використовувати move_uploaded_file () замість copy () і rename () для цієї мети, оскільки вона виконує додаткову перевірку, щоб переконатися, що файл був дійсно завантажений за допомогою запиту HTTP POST.

Якщо ви плануєте зберігати файл з реальним ім'ям, то потрібно дотримати кілька правил. Файл не повинно містити такі символи як слеш, які можуть вплинути на розташування. Назва не повинно збігатися з назвою вже існуючих файлів, щоб не переписати їх. Замінюємо будь-які символи не є буквою або цифрою на нижнє підкреслення, і додаємо «збільшувальне» число при збігу імен.

Отримання і обробка завантаження файлів за допомогою PHP виглядає наступним чином:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

// директорія для збереження файлу
define ( "UPLOAD_DIR", "/ srv / www / uploads /");

if (! empty ($ _FILES [ "myFile"])) (
$ MyFile \u003d $ _FILES [ "myFile"];

// перевіряємо на наявність помилок при завантаженні
if ($ myFile [ "error"]! \u003d\u003d UPLOAD_ERR_OK) (
echo "

Виникла помилка.

" ;
exit;
}

// забезпечуємо безпечне найменування файлу
$ Name \u003d preg_replace ( "/[^A-Z0-9._-]/i", "_", $ myFile [ "name"]);

// при збігу імен файлів додаємо номер
$ I \u003d 0;
$ Parts \u003d pathinfo ($ name);
while (file_exists (UPLOAD_DIR. $ name)) (
$ I ++;
$ Name \u003d $ parts [ "filename"]. "-". $ I. "." . $ Parts [ "extension"];
}

// переміщаємо файл в постійне місце зберігання
$ Success \u003d move_uploaded_file ($ myFile [ "tmp_name"],
UPLOAD_DIR. $ Name);
if (! $ success) (
echo "";
exit;
}

// задаємо права на новий файл
chmod (UPLOAD_DIR. $ name, 0644);

echo "

Файл ". $ Name. "Успішно завантажений.

" ;
}

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

питання безпеки

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

Один з них полягає в перевірці типу завантаження. Спиратися на значення зберігається в $ _FILES [ «myFile»] [ «type»] «не є добре», так як розширення в імені файлів можуть бути легко підроблені. У таких ситуація краща проаналізувати вміст файлу, наприклад використання функції exif_imagetype () дозволяє визначити, чи дійсно завантажений файл є картинкою з розширенням GIF, JPEG і тд. Якщо exif_imagetype () недоступна (функція вимагає розширення Exif), То ви можете використовувати getimagesize (). Повертається масив буде містити розміри і тип зображення.

1
2
3
4
5
6
7

...
// файл повинен бути зображенням
$ FileType \u003d exif_imagetype ($ _FILES [ "myFile"] [ "tmp_name"]);
$ Allowed \u003d array (IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG);
if (! in_array ($ fileType, $ allowed)) (
// тип файл не допускається
...

Для не-графічних файлів, ви можете використовувати Exec () для виклику утиліти Unix - File. Дана утиліта визначає тип файлу.

Інший крок, який ви можете зробити для посилення безпеки при завантаженні файлів, це накласти жорсткі обмеження на загальний розмір запиту POST і кількість файлів, які можуть бути завантажені. Щоб зробити це, необхідно вказати відповідне значення для директив upload_max_size, post_max_size і max_file_uploads в файлі php.ini.

  • upload_max_size визначає максимальний розмір файлів.
  • На додаток до розміру завантаження, ви можете обмежити розмір запит POST завдяки директиві post_max_size.
  • max_file_uploads більш нова директива (додана у версії 5.2.12), яка обмежує кількість завантажених файлів.

post_max_size \u003d 8M
upload_max_size \u003d 2M
max_file_uploads \u003d 20

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

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

P.S. У вас сайт на движку Joomla і ви користуєтеся послугами хостингу? Для тих хто домагається максимальної продуктивності інтернет-проектів, варто спробувати хостинг з joomla. Спеціалізований хостинг для сайтів на Joomla забезпечить стабільну і ефективну роботу, а вигідні тарифні плани нікого не залишать байдужими.

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

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

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

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

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

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

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

Так як елемент для завантаження файлу на формі має name \u003d "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 \u003d 2M

Змінимо її на

Upload_max_filesize \u003d 10M

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

; Upload_tmp_dir \u003d

Змінимо її на

Upload_tmp_dir \u003d "C: / php / upload"

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

мультизагрузка

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

$ Error) (if ($ error \u003d\u003d UPLOAD_ERR_OK) ($ tmp_name \u003d $ _FILES [ "uploads"] [ "tmp_name"] [$ key]; $ name \u003d $ _FILES [ "uploads"] [ "name"] [$ key]; move_uploaded_file ($ tmp_name, "$ name");)))?\u003e

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




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

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

Додаток для завантаження файлів на сервер являє собою HTML-форму (upload.html) і скрипт upload.php для її обробки.

зауваження: Ви можете завантажити промислову версію системи завантаження файлів на сервер з розділу. Система дозволить вам не тільки завантажити файл на сервер, але і змінити його розмір, фон і ін.

Код форми (upload.html)

Форма для завантаження файлів



Код скрипта обробки форми (upload.php)

Результат завантаження файлу 1024 * 3 * 1024) (echo (); exit;) // Перевіряємо завантажений файлif (is_uploaded_file ($ _FILES [ "filename"] [ "tmp_name"])) ( // Якщо файл завантажений успішно, переміщаємо його // з тимчасової директорії в кінцевуmove_uploaded_file ($ _FILES [ "filename"] [ "tmp_name"], "/ path / to / file /". $ _FILES [ "filename"] [ "name"]); ) Else (echo ( "Помилка завантаження файлу"); } ?>

Атрибут entype форми визначає вид кодування, яку браузер застосовує до параметрів форми. Для того щоб відправка файлів на сервер діяла, атрибуту entype необхідно присвоїти значення multipart / form-data. За замовчуванням цей атрибут має значення application / x-www-form-urlencoded.

Елемент введення цієї форми повинен мати тип file.

Після того, як отримано HTTP-запит, вміст завантаженого файлу записується в тимчасовий файл, який створюється в каталозі сервера, заданому за замовчуванням для тимчасових файлів, якщо інший каталог не заданий у файлі php.ini (директива upload_tmp_dir).

Характеристики завантаженого файлу доступні через двовимірний масив $ _FILES.

Cкриптов upload.php завантажує файл на сервер і копіює його в каталог / path / to / file /.

У деяких випадках потрібно обмежити розмір файлу, який може бути завантажений на сервер. Наприклад, щоб дозволити завантаження на сервер тільки файлів з розміром не більше 3 Мбайт, в наведеному скрипті міститься код:

1024 * 3 * 1024) (echo ( "Розмір файлу перевищує три мегабайта"); exit; ) ...?\u003e

Максимальний розмір файлу можна також задати за допомогою директиви upload_max_filesize, значення якої за замовчуванням дорівнює 2 Мбайт:

upload_max_filesize) ..?\u003e

Multipart-форми

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

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



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

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

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

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

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

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

  • file_uploads \u003d On - дозволяє завантаження файлів на сервер по протоколу HTTP;
  • upload_tmp_dir \u003d / tmp - встановлює каталог для тимчасового зберігання завантажених файлів;
  • upload_max_filesize \u003d 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 uploads

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

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

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


// Каталог, в який ми будемо приймати файл:
$ Uploaddir \u003d "./files/";
$ Uploadfile \u003d $ 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:


Send these files:






У разі, якщо така форма була відправлена, масиви $ _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, дивіться.



<<< Назад зміст вперед \u003e\u003e\u003e
Є ще питання чи щось незрозуміло - ласкаво просимо на наш

 

 

Це цікаво: