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

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

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

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

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

Возьмем, к примеру, эту форму:

  <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 ()' будет перед вызовом submit () заполните поля user и dest. Я хотел бы также проверить пользовательскую и целевую стороны сервера, прежде чем recv () будет обрабатывать все тело HTTP-запроса.

21
задан Brian McFarland 16 September 2011 в 20:34
поделиться