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));


 

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

45758. Лейбниц. Монадология 53.5 KB
  Согласно Лейбницу основаниями существующих явлений или феноменов служат простые субстанции или монады. Все монады просты и не содержат частей. Монады не могут претерпеть изменения в своём внутреннем состоянии от действия какихлибо внешних причин кроме Бога. Монада способна к изменению своего состояния и все естественные изменения монады исходят из её внутреннего принципа.
45759. Джон Локк. Опыты о человеческом разумении 28 KB
  Опыты о человеческом разумении 4 книги Локк впервые дал систематическую теорию эмпиризма. Средоточие философии Локка – его теория познания изложенная в Опыте о человеческом разумении Ее задача объяснить происхождение и основы человеческого познания и найти границы познавательной способности рассудка. Задачи философии Предмет философии по Локку исследование происхождения знания.
45760. Маклюэн. Понимание медиа 37.5 KB
  Понимание медиа. посвящённа осмыслению средств массовой коммуникации медиа. Средства массовой коммуникации медиа Маклюэн понимает чрезвычайно широко как расширение человека. По мнению Маклюэна глубочайшим заблуждением является убеждение в нейтральности медиа.
45761. Маркс К. К критике политической экономии 30.5 KB
  Маркс считает что анатомию гражданского общества следует искать в политической экономии. Совокупность этих производственных отношений составляет экономическую структуру общества реальный базис на котором возвышается юридическая и политическая надстройка и которому соответствуют опре формы общго сознания. На известной ступени своего развития материальные производительные силы общества приходят в противоречие с существующими производственными отношениями внутри которых они до сих пор развивались. Ни одна общая формация не погибает раньше...
45762. Одномерный человек 41.5 KB
  В результате пролетариат перестал быть революционным классом интегрировавшись в привычную систему ценностей а общество утратило возможности развития. Общество стало бесклассовым но оно далеко от марксова идеала коммунизма. Вместо коммунизма получилось одномерное общество неототалитарная Система существующая за счет гипноза средств массовой информации которые внедряют в каждое индивидуальное сознание ложные потребности и культ потребления. Общество называется свободным имеется в виду либеральное общество в то время как на самом деле в...
45763. НИЦШЕ "АНТИХРИСТ. ПРОКЛЯТИЕ ХРИСТИАНСТВУ" 36 KB
  ПРОКЛЯТИЕ ХРИСТИАНСТВУ предпоследняя работа Ницше Der ntichrist ; первое издание в 1895 окончательная редакция 1956. Позиция Ницше была не совместима с традиционалистским атеизмом. Скорее позиция Ницше напоминает бунт преодоление а не голое и бесплодное отрицание. Священников Ницше именует ядовитыми пауками на древе жизни Церковь для Ницше смертельный враг всего благородного на земле она стремится растоптать всякое величие в человеке она выступает за все болезненное и слабое.
45764. Ницше «Рождение трагедии из духа музыки» 37 KB
  Следует отметить что уже в предисловии посвященном Рихарду Вагнеру Ницше заявляет важнейшую посылку своей работы серьезное отношение к эстетической проблематике к искусству говоря о том что противопоставление искусства серьезности существования грубое недоразумение и что его собственное убеждение это взгляд на искусство как на высшую задачу и собственно метафизическую деятельность в этой жизни. Рождение трагедии из духа музыки Die Geburt der Trgödie us dem Geiste der Musik эстетический трактат 1872 года в котором...
45765. Остин. Как производить действия при помощи слов 40 KB
  Остин требует соотносить философские понятия с понятиями обыденного языка с тем как то или иное слово употребляется в обыденной речи. Книга Как произошло слово самая знаменитая работа по философии обыденного языка . Теория речевых актов представлена в нем как только лингвистическая теория ни о какой философии обыденного языка там и речи нет. Введение перформатива позволяет Остину определить область действия правил логической семантики “утверждений†и очертить таким образом сферу употребления терминов обыденного языка определяемое их...
45766. Полани. Личностное знание 37 KB
  Полани является автором концепции личностного или неявного знания которое с его точки зрения нельзя выразить в явной форме но которое является сущностной составляющей деятельности ученого. Ключевое понятие “эпистемологическая страстность†для Полани “истина†это личностная категория относящаяся к убеждениям каждого конкретного человека. Что касается проблемы сознания то Полани так определяет свою концепцию: “Главным ключом для пересмотра этого понятия понятия “знаниеâ€.Для Полани “личностное знание†это сплав...