Граница при отправке файла данных с использованием HTTP? - PullRequest
2 голосов
/ 02 сентября 2010

Я прочитал несколько статей в сети для отправки файлов по HTTP / (Ajax).При чтении я обнаружил, что нужно установить границу для файла и т. Д.

Я не понимаю, что и почему?Может кто-нибудь, пожалуйста, помогите мне понять это.

Ответы [ 2 ]

1 голос
/ 02 сентября 2010

В многочастной форме с enctype="multipart/form-dat a, клиент использует граничную строку, которая отделяет поле ввода от загруженных файлов и разделяет разные файлы. Это строка, которой нет ни в одной из отправленных данных формы, включая данные файла. Граница помогает серверу правильно анализировать данные, чтобы отделить поля ввода от данных файла, поскольку все данные отправляются в одном запросе.

С rfc1867, раздел 3.3

Выбрана граница, которая не встречается ни в одном из данных. (Этот выбор иногда делается вероятностным.)

Пример из того же RFC:

Предположим, сервер предоставляет следующий HTML-код:

 <FORM ACTION="http://server.dom/cgi/handle"
       ENCTYPE="multipart/form-data"
       METHOD=POST>
 What is your name? <INPUT TYPE=TEXT NAME=submitter>
 What files are you sending? <INPUT TYPE=FILE NAME=pics>
 </FORM>

и пользователь вводит «Джо Блоу» в поле имени и выделяет текст файл "file1.txt" для ответа на вопрос "Какие файлы вы отправляете?" Клиент может отправить обратно следующие данные:

    Content-type: multipart/form-data, boundary=AaB03x

    --AaB03x
    content-disposition: form-data; name="field1"

    Joe Blow
    --AaB03x
    content-disposition: form-data; name="pics"; filename="file1.txt"
    Content-Type: text/plain

     ... contents of file1.txt ...
    --AaB03x--
0 голосов
/ 02 сентября 2010

HTTP-сообщение имеет только одно тело и может иметь только один тип содержимого.Вот почему есть составные сообщения , которые представляют собой набор частей.И эти части разделены границей.См. этот ответ для схематического примера того, как выглядит составное сообщение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...