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


 

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

45004. ИЗУЧЕНИЕ ЯВЛЕНИЯ ВНЕШНЕГО ФОТОЭФФЕКТА. ОПРЕДЕЛЕНИЕ ПОСТОЯННОЙ ПЛАНКА 224.5 KB
  Снять зависимость задерживающего напряжения от частоты излучения. Поглощение оптического излучения веществом часто сопровождается электрическими явлениями которые получили название фотоэлектрического фотоэффекта. ВНЕШНИМ ФОТОЭФФЕКТОМ называется явление испускания электронов веществом под действием электромагнитного излучения. Характер зависимости фототока I от разности потенциалов между анодом и катодом U при постоянной интенсивности падающего на фотокатод монохроматического излучения приведен на Рис .
45005. ДИСПЕРСИЯ СВЕТА 493.5 KB
  Измерить показатели преломления материала призмы для различных длин волн спектра ртутной лампы. Построить зависимость показателя преломления материала призмы от длины волны света.Показатель преломления. Абсолютный показатель преломления вещества равен отношению фазовой скорости света в вакууме к фазовой скорости света в веществе: n = c v.
45006. ОСНОВЫ РЕФРАКТОМЕТРИЧЕСКОГО АНАЛИЗА 295 KB
  Изучение законов преломления и отражения света и методики измерения показателя преломления.Определение зависимости показателя преломления от концентрации глицерина поваренной соли в водном растворе. Законы преломления и отражения света. Аналогично вводятся угол отражения угол β и угол преломления угол γ.
45007. ОПТИЧЕСКИЕ ИЗМЕРЕНИЯ С ПОМОЩЬЮ ГОНИОМЕТРА Г-5 542 KB
  Измерить углы между гранями стеклянной призмы. Измерение углов призмы методом отражения. Схема измерения углов призмы методом отражения углы между нормалями к граням призмы. Призму устанавливают таким образом чтобы пучок света идущий из коллиматора отражаясь от одной из граней призмы давал в перекрестии сетки окуляра изображение щели...
45008. ИЗУЧЕНИЕ ВРАЩЕНИЯ ПЛОСКОСТИ ПОЛЯРИЗАЦИИ 412 KB
  Атомы излучают световые волны независимо друг от друга поэтому световая волна излучаемая телом в целом в течение некоторого времени наблюдения характеризуется всевозможными равновероятными колебаниями светового вектора рис. рис. Волна называется поляризованной по кругу или волной с циркулярной поляризацией если конец вектора E описывает в фиксированной плоскости перпендикулярной направлению распространения волны окружность рис. Рис.
45009. АНАЛИЗ ПОЛЯРИЗАЦИИ ЛАЗЕРНОГО СВЕТА 664 KB
  Изучить типы поляризации света и методы их описания. Ознакомиться с методикой анализа поляризации света. Провести анализ поляризации лазерного излучения. Определить угол Брюстера и показатель преломления стекла на длине волны излучения лазера.
45010. Дифракция Фраунгофера 481 KB
  Цель работы: изучение дифракции Фраунгофера на одной щели и на дифракционной решетке. Основные положения дифракции света. Необходимо отметить также что при дифракции за препятствием возникает перераспределение светового потока. Однако принцип Гюйгенса не дает информации об интенсивности волн распространяющихся в различных направлениях и не объясняет перераспределение светового потока при дифракции.
45011. ИЗУЧЕНИЕ ПРОЦЕССА ПОГЛОЩЕНИЯ СВЕТА ВЕЩЕСТВОМ 247.5 KB
  Ознакомиться с механизмом поглощения света изучить основные закономерности поглощения света веществом. ОСЛАБЛЕНИЕ СВЕТА Опыт показывает что при прохождении света через слой вещества его интенсивность уменьшается. Этот факт является результатом взаимодействия электромагнитного излучения с веществом при котором происходит поглощение и рассеяние света а также отражения света на границах раздела различных сред.
45012. Интерференция света и метод определения кривизны линзы с помощью интерференционных полос равной толщины 272 KB
  Возникновение интерференции связано во-первых с тем что для векторов напряженности электрических полей описывающих электромагнитные волны выполняется принцип суперпозиции. Так при наложении двух волн каждая из которых создает в точке наблюдения соответственно электрические поля напряженностью E1 и E2 результирующая напряженность в точке наложения будет равна: Ep = E1 E2 1 Во-вторых возникновение интерференции связано с тем что...