Многопартовая форма загрузки: Гарантируется ли порядок?

При использовании HTML-формы для запроса POST «Content-Type: multipart/form-data» поля всегда отображаются в том порядке, в котором они перечислены в HTML. На практике это делают все браузеры?

Основная мотивация для того, чтобы знать это, состоит в том, что я могу выполнить серверную проверку данных формы без необходимости кэширования всего HTTP просить в оперативной памяти | диск.

Я знаю, что CGI, PHP и т.д. обычно ничего не делают до завершения загрузки. Вероятно, потому, что RFC 2388 раздел 5.5 решает эту проблему, говоря, что порядок не определен. Я работаю с высоко настроенной вилкой thttpd и занимаюсь загрузкой кода w/C, встроенного прямо в сервер. Мне все равно, что делают большинство серверов.

Что я хочу знать, если я выхожу на конечность и предполагаю порядок, я буду сожжен этим предположением?

Примите такую форму, например:

  <form id="formUpload"
        target = "uploadTarget"
        method = "post"
        action = "/bin/upload"
        enctype= "multipart/form-data" >
    <input type="hidden" id="inUser" name="user" />
    <input type="hidden" id="inDest" name="dest"/>
    <input type="file" id="inFile" name="file" />
    <input type="button" value="Upload" onclick="uploadFile();" />
    <iframe id="uploadTarget" name="uploadTarget" src="" style="width:0;height:0;border:0px"/>
  </form>

Функция 'uploadFile ()' заполнит поля user & dest перед вызовом submit (). Прежде чем recv () - весь текст просить, необходимо проверить и сторону сервера.

-121--998264- Схема: Списки трех пунктирных элементов, возвращающихся странно (как оператор инфикса?) Я новый ученик Схемы/Ракетки, поэтому, пожалуйста, извините любые вопиющие синтаксические ошибки. Сегодня в классе пришло, что перечислять схем '(a, b, c) должен быть недействительным, но когда мы его запустили, он вернулся: >' (a....

Я новый студент Scheme/Racket, поэтому, пожалуйста, извините любые вопиющие синтаксические ошибки.

Сегодня в классе появилось, что список схем '(a, b, c) должен быть недействительным, но когда мы его запустили, он вернулся:

>'(a . b . c)  
(b a c)

Что не имеет смысла. Afaik, интерпретатор должен создать ячейку недостатков с автомобилем 'a и cdr' b, и 'c должен быть недействительным. При этом переводчик делает здесь что-то действительно странное. Это работает с # lang scheme, # lang racket и другими. Мы используем DrRacket в качестве переводчика.

Интересно, что

>'(a . b . c . d)

бросает исключение и умирает.

Я очень любопытен и хотел бы иметь возможность понять это, поскольку я новичок в языке. Google был очень бесполезным (вероятно, так как поисковые термины своего рода неоднозначны) Спасибо!

ПРАВКА: Возможно, '(a. b. c) интерпретируется с b как оператор инфикса. Например: > (4. +. 6) возвращает 10. Возможно, интерпретатор использует b как оператор? то есть (b a c) , как (+ 4 6) , инфиксирующие.

Expermentation говорит:

>(define b +)  
>(define a 4)  
>(define c 6)  
>(a . b . c)  
10

Поэтому я думаю, что это решает проблему, но я до сих пор не до конца понимаю использование оператора «.» в данном случае. Я думаю, мы решили это, но любое другое понимание было бы очень ценно!

6
задан Erty Seidohl 16 September 2011 в 20:09
поделиться