![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
Скрипты для обработки принимаемых данных
Итак, посетитель сайта выбрал файл на своем диске и нажал на кнопку «Отпра-
вить». Теперь наша задача — обработать данные, переданные формой, и сделать
что-нибудь с передаваемым файлом. Для этого воспользуемся скриптом на РНР.
В РНР загрузка файлов осуществляется гораздо проще, нежели при помощи скрип-
тов, написанных на другом языке, например на Perl. Все дело в том, что в РНР есть
встроенный модуль, который и отвечает за загрузку. Конечно, можно поступить
и по аналогии с Perl: открывать входной поток данных, вычислять имя, получать
и писать данные в двоичном режиме и т. д. Однако гораздо удобнее воспользовать-
ся встроенным механизмом.
Как вы помните, в созданной нами форме переменная, которая передает имя фай-
ла, названа myf ilel. Если в качестве аргумента к параметру action в форме задан
PHP-скрипт, то в самом скрипте после передачи в него методом Post данных из
формы будут предопределены следующие переменные:
$myf ilel — имя (полно'е, с путем) временного файла, под которым были сохране-
ны загруженные на сервер данные;
$myf ilel_name — имя оригинального файла, под которым данные были у пользо-
вателя на диске;
$myf ilel_size — размер файла, который был загружен на сервер;
$myf ilel_type — MIME-тип файла пользователя.
Имея такие переменные, можно написать скрипт, обрабатывающий загрузку файла:
<? move_uploaded_file($userfile, "/download/$userfile_name"); ?>
Если вы укажете такой скрипт, состоящий только из одной строчки, в action, он
примет файл, поместит его во временный каталог, «вычислит» оригинальное имя
этого файла и скопирует в каталог /download/.
Дополнительно можно показать сообщение о том, что файл был успешно загружен,
а также проконтролировать, с тем ли расширением был загружен файл, имеет ли он
тот content-type, не превышает ли он максимально допустимый размер и т. д.
move_uploaded_file — встроенная функция последних версий РНР. Обратите вни-
мание, что файл, который мы загружаем во временный каталог, доступен исклю-
чительно во время запроса на загрузку. После этого РНР уничтожит данный файл.
А это значит, что после загрузки файла необходимо обязательно куда-нибудь пере-
местить полученный файл, иначе вы его потеряете.
если возникнут трудности
При использовании этой технологии не забудьте предварительно убедиться, что
функция загрузки файлов включена администратором сервера в число доступных.
Если администрируете вы сами, то просто отредактируйте конфигурационный файл РНР (php. ini): проверьте, установлена ли опция f ile_uploads в значение «On»,
Также в этом файле можно отрегулировать максимальный размер загружаемых фай-
лов по HTTP. За это отвечает опция upload_max_f ilesize.
Спустя 13 минут, 57 секунд (11.06.2009 - 19:56) kirik написал(а):
Stuff_f
ща будем пинать за дезинформацию!![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
ща будем пинать за дезинформацию!
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Цитата (Stuff_f @ 11.06.2009 - 11:42) |
$myf ilel — имя (полно'е, с путем) временного файла, под которым были сохране- ны загруженные на сервер данные; $myf ilel_name — имя оригинального файла, под которым данные были у пользо- вателя на диске; $myf ilel_size — размер файла, который был загружен на сервер; $myf ilel_type — MIME-тип файла пользователя. |
Во-первых.. что это за названия переменных?
Во-вторых, даже если предположить что имя переменной $myfile_size, то в ней ничего не будет содержаться...
И чем тебе не нравится актуальная статья на эту же тему на php.net?
Спустя 9 минут, 32 секунды (11.06.2009 - 20:06) twin написал(а):
kirik
В этой статье тоже не все гладко. Понятное дело, что она написана для примера, как работает передача и перемещение. А в тонкости там по определению не вдаются. По этому может и не понравилась
Допустим такой момент. Иногда расширение файла задано заглавными буквами. Винда их спокойно видит, а вот загрузить таким способом фиг.
В этой статье тоже не все гладко. Понятное дело, что она написана для примера, как работает передача и перемещение. А в тонкости там по определению не вдаются. По этому может и не понравилась
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Допустим такой момент. Иногда расширение файла задано заглавными буквами. Винда их спокойно видит, а вот загрузить таким способом фиг.
Спустя 14 минут, 33 секунды (11.06.2009 - 20:21) kirik написал(а):
Цитата (twin @ 11.06.2009 - 12:06) |
Иногда расширение файла задано заглавными буквами. Винда их спокойно видит, а вот загрузить таким способом фиг. |
Прошу прощения, почему "фиг"?
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 48 минут, 11 секунд (11.06.2009 - 21:09) twin написал(а):
Я чесно говоря в подробности не вдавался... Может это не везде так, просто на одном хостинге у меня вообще нельзя верхний регистр использовать. Наверно по этому не хочет. Но все равно тонкость...
Спустя 5 часов, 31 минута, 20 секунд (12.06.2009 - 02:40) Alchemist написал(а):
у меня тоже вопрос: разве можно
Цитата (Stuff_f @ 11.06.2009 - 18:42) |
...открывать входной поток данных, вычислять имя, получать и писать данные в двоичном режиме... |
? насколько я помню, пхп загружает файлы еще до того как запускает скрипт...
Спустя 1 час, 23 минуты, 57 секунд (12.06.2009 - 04:04) kirik написал(а):
наверное это имелось ввиду..
_____________
Мы, рабы времени, нужно узнать в жизни все.
Потому, что жизнь это болезнь, передающаяся половым путем!!