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


 

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

25012. Об информационной этике и праве 88 KB
  Как должно быть Базовые законы которые являются фундаментом применения программ и баз данных были приняты достаточно давно: закон № 35231 О правовой охране программ для электронных вычислительных машин и баз данных 23. Основными объектами информационной деятельности на ЭВМ закон признает программу для ЭВМ и базу данных. Программа для ЭВМ объективная форма совокупности данных и команд предназначенных для функционирования электронных вычислительных машин ЭВМ и других компьютерных устройств с целью получения определенного...
25013. Программное обеспечение компьютерных сетей 117 KB
  Преимущество же клиентского языка заключается в том что обработка скриптов на таком языке может выполняться без отправки документа на сервер. В общем случае для организации работы пользователей сети с информационными ресурсами распределенными по различным компьютерам необходимы три составляющих: программа установленная на компьютере пользователя которая может осуществлять сетевой запрос с целью получения объекта и предназначенная для его обработки например просмотра изменения или печати документа; программа установленная как...
25015. Принципы и оценка эффективности PR-деятельности 22.35 KB
  Комплексная оценка эффективности 1997 г. Установление целей и задач оценка подготовки. Оценка коммуникационного продукта измерение вложений. Оценка промежуточных результатов Реально достигнутые аудитории по качеству и количеству.
25016. Правовое обеспечение связей с общественностью. Правовое регулирование или формальное регулирование 39.19 KB
  Но их интересы постоянно сталкиваются юристы заинтересованы в нераспространении информации а PRспециалисты наоборот критикуют политику закрытости. Процесс правового регулирования PR включает в себя следующие законодательные акты: В сфере деятельности органов государственной власти Федеральный закон О порядке освещения деятельности органов государственной власти в государственных средствах массовой информации Закон О государственной тайне Указы Президента РФ О государственном флаге Об управлении Президента РФ по связям с...
25017. Этические проблемы паблик рилейшнз 19.51 KB
  Вопервых это касается этики поведения каждого специалиста PR вовторых этики поведения собственной организации представляемой специалистом. Здесь речь идет о непосредственной зависимости между этикой поведения и успехом компании. Работниками сферы паблик рилейшнз разработано и предложено немало инструкций по этике поведения и руководящих кадров организаций и собственно специалистов данной сферы. Необходимой линией поведения при разрешении большинства из перечисленных проблем является стремление сохранить взаимное доверие между...
25018. Кодексы профессионального поведения специалиста по связям с общественностью 23.79 KB
  Международные кодексы: Кодекс профессионального поведения Международной ассоциации по связям с общественностью IPRA; Международный этический Кодекс Паблик Рилейшнз Афинский кодекс; Профессиональная Хартия международного комитета ассоциаций PRконсультантов Римская Хартия; Кодекс профессионального поведения в области PR Лиссабонский кодекс; Международный кодекс по практике маркетинговых и социальных исследований и др. Международный этический Кодекс Паблик Рилейшнз АФИНСКИЙ КОДЕКС Принят в Афинах Генеральной ассамблеей IPRA в мае...