|
||
Ответить |
|
#1
|
|
Вес репутации:
0
Регистрация: 05.02.2012
Адрес: Los Angeles
Сообщений: 170
Сказал(а) спасибо: 19
Спасибок 41
в 36 сообщениях |
PHP и Upload (Загрузка файлов на сервер) -
02.07.2012, 15:38
PHP и Upload (Загрузка файлов на сервер)
Multipart-формы Загрузка фаилов на сервер осуществляется пользователями сети интернет довольно часто, а именно: Веб-итерфейсы почтовых сервисов, которые позволяют добавалять к письму приложение (attach), а для этого нужно сначала загрузить файл на сервер, и только после этого его можно добавлять к письму; Интерактивные фотогалереи и фотоальбомы, которые не могут существовать без механизма загрузки файлов на сервер; Порталы бесплатного програмного обеспечения, которые используют для обмена файлами различных программ, и.т.д. Загрузка файла на сервер осуществляется с помощью multipart-формы, в которой есть поле загрузки файла. В качестве параметра enctype указывается значение multipart/form-data: Код HTML:
<form action=upload.php method=post enctype=multipart/form-data> <input type=file name=uploadfile> <input type=submit value=Загрузить></form> Multipart-формы обычно используют метод передачи POST. Как видно из предыдущего примера, данная форма имеет два поля: Поле выбора файла для закачки <INPUT type=File>; Поле указания имени файла, которое он должен будет иметь на сервере <INPUT type=text>. Обработка multipart-форм Прежде, чем приступить к написанию скрипта обработки multipart-формы, нужно отредактировать файл конфигурации php.ini, чтобы разрешить загрузку файлов на сервер. Конфигурационный файл PHP php.ini имеет три параметра, связанные с загрузкой файлов на сервер: PHP код:
service httpd restart Как же PHP обрабатывает multipart-формы? Получив файл, он сохраняет его во временном каталоге upload_tmp_dir, имя файла выбирается случайным образом. Затем он создает четыре переменных суперглобального массива $_FILES. Этот массив содержит информацию о загруженном файле. Переменные, определенные для загруженных файлов, зависят от версии PHP и текущей конфигурации. Суперглобальный массив $_FILES доступен начиная с PHP 4.1.0. В случае, если конфигурационная директива register_globals установлена значением on, дополнительно будут объявлены переменные с соответствующими именами. Начиная с версии 4.2.0 значением по умолчанию для опции register_globals является off. Содержимое массива $_FILES для нашего примера приведено ниже. Обратите внимание, что здесь предполагается использование имени uploadfile для поля выбора файла, в соответствии с приведенной выше multipart-форме. Разумеется, имя поля может быть любым. PHP код:
Если кнопка "Submit" нажата, то файл уже будет загружен на сервер и его имя будут в переменной $_FILES['uploadfile']['name']. В этом случае скрипт должен сразу скопировать файл с именем $_FILES['uploadfile']['tmp_name'] в какой-нибудь каталог (необходимы права на запись в этот каталог). Копирование файла производится функцией copy(): Используйте только функцию копирования copy(), а не перемещения, поскольку: Временный файл будет удален фвтоматически; Если временный каталог находится на другом носителе, будет выведено сообщение об ошибке. Предположим, нам нужно загрузить файл в каталог uploads, который находится в корневом каталоге веб-сервера (в каталоге DocumentRoot). PHP код:
PHP код:
Вот теперь можно загружать файлы на сервер. Пишем PHP скрипт загрузки файлов на сервер PHP код:
Загрузку нескольких файлов можно реализовать используя, например, различные значения name для тега input. Также предусмотрена возможность автоматического получения организованной в массив информации о нескольких одновременно загружаемых файлах. Для реализации такой возможности используйте тот же синтаксис отправки массива из HTML-формы, что и для множественных полей select и checkbox: Код HTML:
<form action="upload.php" method="post" enctype="multipart/form-data"> Send these files:<br> <input name="userfile[]" type="file"><br> <input name="userfile[]" type="file"><br> <input type="submit" value="Отправить файлы "> </form> Предположим, что были загружены файлы /home/test/some.html и /home/test/file.bin. В таком случае переменная $_FILES['userfile']['name'][0] будет иметь значение some.html, а переменная $_FILES['userfile']['name'][1] - значение file.bin. Аналогично, переменная $_FILES['userfile']['size'][0] будет содержать размер файла some.html и так далее. Переменные $_FILES['userfile']['name'][0], $_FILES['userfile']['tmp_name'][0], $_FILES['userfile']['size'][0] и $_FILES['userfile']['type'][0] также будут инициализированы. http://www.php.su/phphttp/?uploads Исправил Vector; 02.07.2012 в 19:12. |
#2
|
|
Вес репутации:
0
Регистрация: 24.08.2012
Сообщений: 1
Сказал(а) спасибо: 2
Спасибок 0
в 0 сообщениях |
Re: PHP и Upload (Загрузка файлов на сервер) -
24.08.2012, 19:33
Супер, конечно..
|
Ответить |
Опции темы | |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хаки upload img & file - загрузка файлов и картинок на radikal и webfile | Vector | Вложения и файлы | 40 | 13.05.2016 19:28 |
Хаки Add img upload in popup - загрузка картинок на фотохостинги | Vector | Вложения и файлы | 11 | 29.11.2015 03:25 |
FAQ Загрузка больших файлов на сервер используя PHP | aleks63 | PHP | 0 | 24.06.2012 21:27 |
Инфо Первая загрузка | Vector | Статьи и FAQ | 0 | 01.04.2009 21:50 |