68916

Завантаження файлів

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-27

48 KB

0 чел.

Лекція № 9

Тема: Завантаження файлів

План

  1.  Multipart-форми та їх опис.
  2.  Обробка multipart-форм.

Multipart-форми і їх опис

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

- Web-інтерфейси поштових сервісів дозволяють додати до листа вкладення, а для цього потрібно спершу завантажити файл на сервер, а тільки після цього додавати до листа.

- Інтерактивні фотогалереї і фотоальбоми просто не можуть існувати без механізму завантаження файлів.

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

Завантаження файлу на сервер здійснюється за допомогою так званої multipart-форми, в якій є поле завантаження файлу, — <input type=file>. При цій якості параметра enctype указується значення multipart/form-data:

<form action=upload.php method=POST enctype=multipart/form-data>

<input type=file name=UFile>

Ім'я файлу на сервері <Input type=text name=Filename>

<input type=submit name=upload value=3агрузить>

</form>

Як виглядає Multipart-форма можна подивитися на мал

Multipart-форма

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

Поле файлу вибору файлу для закачування <INPUT type=File>.

Поле вказівки імені файлу, яке він повинен буде мати на сервері <INPUT type=text>.

Сценарій завантаження файлів на сервер.

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

Перш, ніж приступити до написання сценарію завантаження файлу, потрібно відредагувати файл конфігурації /etc/php.ini, щоб вирішити завантаження файлів. Відкрийте файл конфігурації і знайдіть секцію File uploads. У ній будуть три параметри:

file_uploads = On — вирішує завантаження файлів на сервер по протоколу HTTP.

upload_tmp_dir = /tmp — встановлює каталог для тимчасового зберігання завантажених файлів.

upIoad_max_fiIesize — встановлює максимальний об'єм файлів які можуть бути завантажені.

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

service httpd restart

Під Windows 9x/NT нічого робити не потрібно, оскільки РНР не вбудовується, як модуль в Apache.

Як же РНР обробляє Multipart-форми? Отримавши файл, він зберігає його в тимчасовому каталозі upload_tmp_dir, ім'я файлу вибирається випадковим чином. Потім він створить чотири глобальних змінних:

$UFile (так називається поле завантаження файлу) — містить ім'я файлу I в тимчасовому каталозі, наприклад, /tmp/phpJ6r5eR.

$UFiIe_name — ім'я файлу до його відправки на сервер, наприклад | /home/den/water.png або c:\water.png.

$UFiIe_size — розмір прийнятого файлу в байтах.

$UFiIe_type — тип прийнятого файлу (якщо браузер зміг його опреде- ] лити), наприклад, image/png, image/jpeg, text/html.

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

Якщо не натиснута кнопка "Submit" — відобразити форму завантаження файлу. 1

Якщо кнопка "Submit" натиснута, то файл вже буде завантажений на сервер і j його ім'я буде в змінній $UFile. В цьому випадку сценарій винен відразу скопіювати файл з ім'ям $UFile у який-небудь каталог (ви повинні мати права запису в цей каталог). Ви НЕ можете зберегти ім'я файлу в Cookies і скопіювати його при наступному запуску сценарію — файлу з ім'ям $UFile вже не буде — це звичайний тимчасовий файл і він буде видалений при завершенні роботи сценарію. Копіювання проводиться функцією copy():

copy($UFile, "/var/www/html/uploads/".basename($UFile_name) );

Потрібно використовувати тільки функцію копіювання. Використовувати функцію переміщення немає ніякого сенсу, оскільки:

Тимчасовий файл буде видалений автоматично.

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

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

// Про всяк випадок створюємо каталог. Якщо він вже створений,

// повідомлення про помилку буде

// пригнічене оператором @ @mkdir("uploads",0777) ;

// Копіюємо файл з /tmp в uploads

// Ім'я файлу буде таким же, як до відправки на сервер

copy($UFile, "uploads/".basename($UFile_name));


 

А также другие работы, которые могут Вас заинтересовать

64422. МОДЕЛЮВАННЯ ТА ВДОСКОНАЛЕННЯ ПРОЦЕСУ ПЛАСТИФІКАЦІЇ КОНДИТЕРСЬКИХ МАС 354 KB
  Одним з найбільш перспективних напрямів вирішення цієї проблеми є математичне моделювання технологічних процесів для визначення фізико-хімічних і реологічних показників напівфабрикатів на всіх стадіях виробництва.
64423. Особливості успадкування кількісних ознак донорів короткостебловості жита озимого та їх використання в селекції 276.5 KB
  Згідно з поставленою метою вирішували такі завдання: встановити особливості фенотипової і генотипової мінливості успадковуваності фенотипових і генотипових кореляцій та селекційну цінність ознак донорів короткостебловості...
64424. Ефективність мультипробіотику «Симбітер-2» при дисбактеріозі ротової порожнини у хворих на вторинну адентію 666 KB
  Мета оцінка стану мікробіоценозів екологічної ніші ротової порожнини при вторинній адентії та розробка підступів щодо їх корекції з використанням мультипробіотику...
64425. ОЦІНКА ЗАЛИШКОВОГО РЕСУРСУ КУЗОВА ЛЕГКОВОГО АВТОМОБІЛЯ У ЕКСПЛУАТАЦІЙНИХ УМОВАХ 475.73 KB
  Після проведення такого кваліфікованого ремонту автомобіля з малим пробігом за допомогою сучасних технологій досвідчений автоексперт не може визначити чи проводився ремонт кузова досліджуваного автомобіля.
64426. Створення вихідного матеріалу та гібридів соняшнику з підвищеним вмістом гліцеридів пальмітинової кислоти в олії 408.5 KB
  Оптимальним вирішенням важливого наукового завдання щодо створення гібридів соняшнику з підвищеним вмістом гліцеридів пальмітинової кислоти є генетичне поліпшення культури що дозволяє одержувати високоякісні олії...
64427. ВІТРАЖ ЦИВІЛЬНОЇ БУДІВЛІ ЯК ФАКТОР ЗМІНИ ТЕМПЕРАТУРИ ПОВІТРЯ ПРИМІЩЕННЯ ЗА ЛІТНІХ УМОВ 787.5 KB
  Нерідко в приміщеннях з вітражами виникають дискомфортні умови в літній період такі як підвищена температура внутрішнього повітря висока температура поверхонь світлопрозорого огородження негативний вплив на людину теплового опромінювання з боку вітража.
64428. Поліпшення діяльності підприємств автосервісу на основі оптимізації виробничих процесів 252 KB
  За сучасних умов робота підприємств автосервісу ПАС має бути спрямована на найбільш повне задоволення споживачів шляхом надання різноманітних якісних послуг які б позбавили споживача від усіх проблем повязаних з використанням автомобіля за прийнятну для споживачів ціну.
64429. Покращення діяльності підприємств автосервісу на основі оптимізації виробничих процесів 157.5 KB
  Необхідність філософського аналізу ціннісних установок особистості в освітньому процесі полягає не тільки в тому аби втілити до досліджень філософії новий аспект а й тому що такий аналіз освіти перебуває...
64430. ЗАБЕЗПЕЧЕННЯ КОНКУРЕНТОСПРОМОЖНОСТІ ПРОДУКЦІЇ АПК УКРАЇНИ НА ЗОВНІШНІХ РИНКАХ 303 KB
  В сучасних умовах посилення глобалізації світових господарських звязків питання забезпечення конкурентоспроможності продукції АПК у сфері зовнішньої торгівлі належить до пріоритетних завдань національного економічного розвитку.