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


 

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

36170. ОПТИЧЕСКИЕ ГОЛОВКИ 260 KB
  Задача эта непростая поскольку большинство оптических элементов адаптировано как правило для работы с излучением только одной длины волны. Вопервых необходимо было обеспечить приемлемое рабочее расстояние объектива при любой длине волны излучения. Вовторых обеспечить компенсацию сферических аберраций также при любой длине волны излучения. Втретьих обеспечить изменение числовой апертуры объектива в зависимости от длины волны проходящего через него света.
36171. SuperAudioCD 87 KB
  Следует заметить что технология одноразрядного квантования используется сейчас и для преобразования звука в других форматах однако там полученный одноразрядный поток в конце концов всетаки приводится к последовательности многоразрядных отсчетов 16 20 24разрядных и в дальнейшем все операции по формированию потока данных перед записью на носитель производятся уже с ними. Этот слой является носителем данных DSD и считывается оптической головкой с числовой апертурой 06 лучом лазера с длиной волны излучения 650 нм. В процессе...
36172. Варианты формата CD 133 KB
  Такая версия компактдиска появилась в 1985 году и получила название CDROM Read Only Memory память только для чтения. Поскольку диск CDROM предстояло использовать в составе вычислительных комплексов различной сложности то для него был разработан специальный дисковод легко вписывающийся в архитектуру компьютера. Дополнительное кодирование в CDROM производится до того как данные поступают на кодер CIRC точно такой же как в системе защиты от ошибок формата CDAudio. В формате CDROM эти 24 символа являются обезличенными и могут нести...
36173. ИЗГОТОВЛЕНИЕ BD-ДИСКОВ 401 KB
  Мастеринг BDдисков Существует три основные технологии мастеринга BDдисков: метод PTM иммерсионный метод и метод записи пучком электронов. Системы EBR Electron Beam Recorder использующие для записи пучок электронов наиболее дороги но позволяют получить очень высокое разрешение.1 иллюстрирует процесс формирования дорожки записи. Такая длина волны близка к длине волны излучения газовых лазеров которые применяются для записи оптических дисков в форматах CD и DVD.
36174. Структура минидиска 56.5 KB
  Частота сигнала вобуляции равна 2205 кГц. Эту частоту легко получить путем деления пополам частоты дискретизации звукового сигнала fд = 441 кГц. Кодирование данных DIP производится перед изготовлением диска путем частотной модуляции несущей fн = 2205 кГц бифазным кодом. Модуляция осуществляется с помощью тактовой частоты fт = 6300 Гц которая получается путем деления частоты дискретизации 441 кГц на 7 см.
36175. Записываемые диски 215.5 KB
  Длина волны вобуляции в общем случае равна 5 мкм рис. ФОРМАТ КОДИРОВАНИЯ АДРЕСНЫХ ДАННЫХ ВОБУЛЯЦИЕЙ НАПРАВЛЯЮЩЕЙ ДОРОЖКИ Записываемый диск BDR и перезаписываемый диск BDRE имеют один и тот же формат данных которые содержатся в законе вобуляции направляющей дорожки и формируются еще при изготовлении диска. Кроме того модулируя закон вобуляции можно заносить на диск дополнительные данные необходимые как для идентификации фрагментов записываемого материала так и для идентификации самого диска. Поскольку запись данных всегда выполняется...
36176. КОНСТРУКЦИЯ ДИСКА BD-ROM 50 KB
  Однако регистрирующий слой у BDдиска находится гораздо ближе к внешней поверхности той через которую осуществляется считывание чем у CD и DVD на расстоянии всего 100 мкм от нее у CD это расстояние равно 11 мм у DVD 06 мм. Если диск является двухслойным то второй информационный слой L1 располагается на расстоянии 25 мкм от первого слоя L0 ближе к внешней поверхности рис. Между этими двумя информационными слоями также находится разделительный слой поликарбоната. Диск BDROM Если диск является диском BDROM тиражированный...
36177. Digital Versatile Disc (DVD) 108.5 KB
  В процессе работы над новым носителем несколько раз менялось его название отражая основные намерения разработчиков на том или ином этапе: MMCD MultiMediCD; HDDVD High Density Digitl Video Disc; HDCD High Density CD. Даже названия у них были чемто схожи: SDDVD Super Density Digitl Video Disc перекликается с HDDVD. SDDVD тоже имеет двухслойную структуру однако она несколько иная чем у MMCD ибо образуется за счет того что склеиваются вместе две половинки диска каждая из которых имеет толщину 06 мм рис.
36178. Налоги налогообложение 255.5 KB
  Принцип справедливости утверждающий всеобщность обложения и равномерность распределения налога между гражданами соразмерно их доходам которыми они пользуются под покровительством и защитой государства. Принцип экономии заключающийся в сокращении издержек взимания налога и рационализации системы налогообложения. Все последующие функциональные элементы налога объекты налогообложения ставки льготы и др. Расчет налога производится непосредственно от налоговой базы.