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)

    Если понедельник начинается в субботу (и давно пора строить Алдан), другими словами суббота - понедельник следущей недели, то понедельник это…

  • 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