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


 

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

48823. Правове регулювання інвестиційної діяльності в спеціальних (вільних) економічних зонах в Україні 152.5 KB
  Вільні економічні зони Вез міцно увійшли у світову господарську практику та діють у різних державах. Зараз у світі по різним даним від 400 до 2000 Вез але до них не можна віднести ні одну українську оскільки ті утворення які в Україні називаються вільними економічними зонами не задовольняють міжнародні вимоги які виставляються до такого роду зонам. Крім того не звертаючи уваги на неодноразові спроби створення реально функціонуючих Вез в Україні вони остаються у вітчизняній економіці явищем скоріш екзотичним...
48824. Повышение эффективности транспортного обслуживания процессов ремонта магистральных нефтепроводов методом вырезки дефектного участка путем снижения суммарных затрат 27.71 MB
  Данные, полученные на основании контрольных измерений, испытаний и профилактических осмотров, систематизируют и используют в качестве основы для планирования и проведения ремонтных работ, в том числе и ремонтных работ связанных с вырезкой «катушки». На проведении ремонтов методом вырезки дефекта задействована спецтехника и оборудование.
48825. Проектирование общественного здания в РБ, г. Давлеканово 560.5 KB
  Проектируемое здание расположено на участке со спокойным рельефом с небольшим уклоном в северо-восточную сторону. Проектируемое здание расположено с отступом от красной линии. Главный фасад расположен на северо-восток. На участке расположены: жилой дом №1, жилой дом №2, больница, здание банка, парк, дом быта, кинотеатр, автомобильная стоянка.
48826. Кольца, полукольца, мера на полукольце 409 KB
  Кольцо множеств есть система множеств, замкнутая по отношению к взятию суммы и пересечения, вычитанию и образованию симметрической разности. Любое кольцо содержит пустое множество Ø, так как всегда А\A=Ø. Система, состоящая только из пустого множества, представляет собой наименьшее возможное кольцо множеств.
48828. ОРГАНІЗАЦІЯ ДОСЛІДНОЇ ДІЛЬНИЦІ ВИРОБНИЦТВА ОКТАН-КОРЕКТОРА 578.5 KB
  У цій частині курсового проекту розраховуємо дослідну дільницю виробництва Октан - коректора. Вихідними даними для розрахунку будуть: Програма випуску – 100 штук за 1 день. Режим роботи дільниці, що проектується, – одна зміна тривалістю 8 годин. Планово-операційна карта виготовлення виробу.
48829. ОРГАНІЗАЦІЯ ДОСЛІДНОЇ ДІЛЬНИЦІ ВИРОБНИЦТВА «ПІДСИЛЮВАЧ НЧ» 555.5 KB
  Розрахунок необхідної кількості робітників по професіям і розрядам проводиться на основі планово-операційної карти шляхом ділення об’єму роботи по кожній професії і розряду на дійсний фонд часу роботи одного робітника.
48830. Разработка одиночного стрелочного перевода 1.99 MB
  Расчет угла и марки крестовины Марка крестовины зависит от угла между рабочими гранями сердечника крестовины. Угол крестовины определяют из уравнения проекции расчетного контура стрелочного перевода на вертикальную ось.16 где конструктивные размеры обеспечивающие сборку переднего стыка крестовины мм; длина накладки равная 820 мм для рельсов типа Р50; постоянный запас мм; показатель марки.18 Полученную таким путем показатель крестовины округляют в большую стороны.