Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     26 Nov 2002  17:30:03
 To : Artem Mikhailov
 Subject : Re: post files
 -------------------------------------------------------------------------------- 
 
 .ru> <slrnau4iih.fe4.ran@banquet.lan.ice.ru>
 .ru> <a6n4uus19ugd6p9fljj53o65497utge74c@4ax.com>
 
 From: Artem Chuprina <ran@ice.ru>
 
 Здравствуй, Artem Mikhailov.
 
 AM> >В том и фокус, что если там просто не загружен файл, то это будет "просто
 AM> >какая-то параметра". С другой стороны, если файл не загружен, то чем это
 AM> >поле не какая-то параметра с пустым телом?
 AM> с одной стороны, действительно, ничего криминального. но у с другой,
 AM> так как в html вывести поле с типом file с заранее определенным value
 AM> - как может сделать любая другая "параметра" - нельзя, то становится
 AM> невозможным писать общие классы обработки всех данных форм. не
 AM> работает стандратная парадигма увидел/изменил/сохранил данные в форме,
 AM> выведенной с текущими сохраненными в прошлой рабочей сессии
 AM> значениями, если там есть тип file. 
 
 Hу так это невозможно на уровне клиента.
 
 AM> для всех остальных типов работает некий - не бейте за умные слова -
 AM> паттерн: 
 AM> foreach (param()) {
 AM>   if (param($_)) { mark for save... }
 AM>   else { mark for save as undef or default in rdbm... }
 AM> }
 AM> при попадании в этот оборот file, вне зависимости от того, храним ли
 AM> мы ссылку или все тело аплоада в репозитарии, нам необходимо
 AM> распараллелить процесс:
 AM> foreach (param()) {
 AM>   if (upload($_)) { do upload, mark for save... }          (1)
 AM>   elsif (param($_)) { mark for save... }    (2)
 AM>   else { mark for save as undef or default in rdbm... }   (3)
 AM> }
 
 AM> и штука в том, что при "неаплоаде" мы неприменно свалимся в (3) и
 AM> сохраним undef, default или что там у нас есть в (3) как обработчик.
 AM> он не знает, и ему никак не сказать, что "файла нет, оставь старый
 AM> линк|тело".  нет функции:
 AM> (1)
 AM> elsif (not_uploaded($_)) { leave it... } (2a)
 AM> (3)
 
 То есть логика для обычных параметров и аплоадов у тебя разная? Так и надо
 говорить.
 
 AM> если бы "неаплоаденный" файл автоматом бы выключался бы из param(),
 AM> это было бы здорово. но он там есть. как undef.
 
 AM> в принципе, можно для каждого param($_) исполнять свой запрос на
 AM> репозитарий, если оно defined, а если оно и defined(upload($_)), то
 AM> еще и do upload. но это опять же, имхо, тот же нелепый хак, что и про
 AM> имена полей/параметров. делать 50 запросов вместо одного? так
 AM> неправильно. можно, в принципе, еще напридумывать хаков, например, со
 AM> скрытыми полями формы. но я считаю, что нужно продумать над (2a). 
 
 if (param("__file_$_")) {
   if (upload($_)) { mark for save... }
   else { leave... }
 } elsif (/^__file_/) {
   next
 } else {
   if (param($_)) { mark for save... }
   else { mark for save as undef or default in rdbm... }
 }
 
 Раз уж у тебя разная логика для параметра, который upload и параметра, который
 не upload, разным кодом ее и реализуй. И озаботься тем, чтобы форма содержала
 метки "такой-то параметр - upload". Ибо никакой стандарт не обещал тебе, что
 браузер будет передавать пустое значение для upload field - он имеет право его
 не передавать вообще.
 
 -- 
 Artem Chuprina
 Communiware.net
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 post files   Artem Mikhailov   23 Nov 2002 00:14:21 
 Re: post files   Artem Chuprina   23 Nov 2002 14:29:03 
 Re: post files   Artem Mikhailov   23 Nov 2002 17:24:15 
 Re: post files   Konstantin Tokar   23 Nov 2002 19:11:21 
 Re: post files   Artem Mikhailov   24 Nov 2002 00:14:04 
 Re: post files   Konstantin Tokar   24 Nov 2002 01:53:33 
 Re: post files   Artem Chuprina   25 Nov 2002 20:06:03 
 Re: post files   Artem Mikhailov   25 Nov 2002 21:36:17 
 Re: post files   Artem Chuprina   26 Nov 2002 17:30:03 
 Re: post files   Andrey Sapozhnikov   26 Nov 2002 22:14:12 
 Re: post files   Konstantin Tokar   26 Nov 2002 16:26:49 
Архивное /ru.cgi.perl/1445404530b59.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional