![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
SHAmanovi4 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Здравствуйте. Не люблю использовать модули без необходимости. Поэтому пишу многое ручками. Скажем, мне удобнее принять переменные руками, написав один foreach, чем заводить new CGI. Так вот. Я хочу узнать, как получить файл (бинарный) на сервере и записать его там. Я выводил тупо весь STDIN на экран. Разобрался со структурой, но почему-то не могу отделить сам файл от заголовка поля
![]() И еще: чтобы сохранить пишу:
Этого достаточно? Потому что меня терзают смутные сомнения... Не нужно ли еще и читать из STDIN, переведенного в binmode? |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 1 Всего: 4 |
Никогда не разбирал руками STDIN, но один раз пришлось заглянуть, когда один криво настроенный сервер просто не передавал часть параметров из вормы в скрипт.
Видимо, есть непонимание формата данных, что приходят в STDIN Есть два варианта. 1. Теоретический: почитать RFC, посвященный CGI - там описан формат потока данных, который потом "попадает в STDIN". 2. Практический: почитать, как это реализовано в CGI.pm --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
SHAmanovi4 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Вот этим, видимо, и придется заняться. Интересно, почему все пользуют CGI.pm? Я понимаю, что удобно иногда, но далеко не всегда ведь! Для вывода html он совершенно излишен, он довольно громоздкий и в нем много того, что не используется вообще или может быть легко заменено обычным кодом. Больше всего поразила функция окончания html, которая просто делает print '</body></html>'; Считаю, что этот модуль безусловно хорош, но далеко не всегда. И не понимаю людей, которые подключают всю эту махину только для того, чтобы принять один параметр из $ENV{QUERY_STRING}. Понимаю, что это стандарт уже почти, но все же... К тому же, когда ты сам принимаешь переменную, то ты на 100% отвечаешь за свой код и понимаешь что он делает. И можешь считать сразу в хеш, например. Вот у меня всегда есть хеш %param. Его и писать проще, чем $q->param(). Все равно научусь разбирать картинки вручную! =================== Да еще, расскажите пожалуйста, а для грамотного чтения картинки нужно STDIN переводить в binmode или всетки нет? Чет я не догоняю что же этот binmode делает... уж читал-читал, все равно не понял. Только на уровне ума понял. А на подкожном - нет ![]() |
|||
|
||||
ZeeLax |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4388 Регистрация: 20.8.2006 Где: Алма-Ата Репутация: нет Всего: 88 |
Чтобы с бубном менше танцевать ![]() -------------------- Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none. — Doug Larson |
|||
|
||||
Zuzu |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.10.2006 Где: Екатеринбург Репутация: 1 Всего: 4 |
Личто мне ним, c CGI.pm, как-то проще.
![]() Что сразу на ум приходит... Параметры рядом и устойчивость форм (в связке c HTML::Template) получается достаточно легко. И все данные (любой фоормы ввода) сохранить в файл. Заголовок (header) свой сделать, не задумываясь о "внутреннем синтаксисе". С куками работа, опять же. И по теме. Есть люди, которым не нравится CGI.pm и они написали что-то свое. Если уж так хочется, напиши свой модуль с интрефейсом аналогичным CGI.pm. Затем будет возможность просто менять модули (друг на друга) и смотреть разницу в производительности того и другого при разных ситуациях. --------------------
Проводить эксперименты на живом сервере опасно, а на мертвом - бесполезно. |
|||
|
||||
JAPH |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 8.1.2007 Где: Ленобласть Репутация: 1 Всего: 23 |
SHAmanovi4,
Для закачки картинок STDIN должен быть в binmode. Можно поэксперементировать и посмотреть, что будет в противном случае ![]()
Файл начинается сразу после после двух \n\n. Я, кстати, тоже обхожусь без CGI.PM. Братья по разуму ![]() Отрывок:
А насчёт сохранения файла полностью согласен - binmode F Это сообщение отредактировал(а) JAPH - 16.1.2007, 19:39 -------------------- Что непонятно - спрашиваем ![]() |
||||
|
|||||
SHAmanovi4 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 13.9.2006 Где: почти мск Репутация: нет Всего: нет |
Прально, лучше танцевать в танке! Соглашусь, с куками работать с этим модулем проще. Хотя, не всегда опять же, нужно. Больше всего нравится, что можно указывать сколько куке жить, а высчитывается все в самом модуле. Но все равно технологию работы с куками надо знать и без модулей. ![]() ![]() ![]() |
|||
|
||||
djkostya |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 16.5.2006 Где: Москва Репутация: 1 Всего: 2 |
Я даже не знаю почему CGI.pm использую, но точно не для вывода HTML Template Toolkit для этого существуют...
Привычка уже... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |