masterspammer (masterspammer) wrote,
masterspammer
masterspammer

Category:

input type="file" multiple="true"

Прочитал про одну приятную фичу, которую хотел бы использовать. Кратко - загружать более одного файла за раз чрез одно поле ввода (выбирая их с Ctrlом в диалоге).

Браузеры это умеют свежие, поставил на пробу FF 3.6 beta 4 и оперу вроде бы 10.10 (но в UserAgentе она пишет "9.80 ... Version/10.10", что странно).

FF посылает два файла как будто бы просто два поля выбора файла с одним именем. Opera - по стандарту, через multipart/mixed - я это парсить не умел. Внутри multipart/mixed - такое же кодирование, как и внутри multipart/form-data, сначала думал сделать рекурсивный вызов парсера из него самого (но с другим разделителем), но в итоге сделал просто стек разделителей - diff парсера оказался в районе килобайта.

И приплыли! При совпадении имён старое значение у меня затиралось новым - ну вот как-то никогда не доводилось мне использовать одноимённые поля. Сначала сделал что второе вхождение превращает значение в массив, который последующими пополняется (файл - хэш, так что путаницы не будет) - некрасиво конечно что нужно думать - массив там или нет, ну да ведь форму тоже не чужой дядя пишет.

В php вроде бы есть поля-массивы, но что-то сразу я не понял как они работают, пришлось звонить товарищу-php-программисту и мои опасения оправдались - там тоже смешиваются массивы с немассивами - например "field" может испоганить массив "field[]". В процессе обсуждения пришли к тому, что в идеале бы хорошо к массивам сделать префикс или суффикс, чтоб не путать их с переменными. В качества суффикса я выбрал "[]" - как в форме и пишется. В итоге в хэше безо всякого конфликта будут лежать (ссылка на) массив "field[]" и просто строка "field" - то есть "[]" в конце имени я решил не убирать.

------
А вот CGI.pm я не употребляю. Хотя бы потому, __КАК__ там сделана (была в тот момент когда я принимал решение использовать ли CGI.pm) работа с закачкой - даже просто возможность отследить сколько там ещё осталось была сделана __ТАК__ ректально, что лучше не связываться с таким кодом. Чего уж говорить о том, чтоб посмотреть имя закачиваемого файла или менять лимиты в зависимости от content-type.
Tags: cms, РазборПолётов, ФиксикиПокусали
Subscribe

  • (no subject)

    Лазерный рефлектометр (виброрефлектометр) - почти что священный Грааль (SpellChecker подсказывает "грабель", ну да, пусть будет "свяженный Грабель")…

  • Вспоминаю Гофмана и что-то бессытдно ржу

    Собственно Золотой Горшок - одна ведьма там возникла от взаимодействия одного из драконьих перьев «с какой-то свекловицей». С какой-то ЧЧЧЕГО??…

  • Мелкоплановое

    Про деревяшку - оказалось, что залакировать (просто закрыв поры) внутри - сложнее, чем снаружи. Изворачиваюсь. Про "Алдан" - осталась одна мысль,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments