Я прочитал несколько статей в сети об отправке файлов с использованием HTTP / (Ajax). При чтении я обнаружил, что нужно установить ГРАНИЦУ для файла и т. Д.

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

2
Anil Namde 2 Сен 2010 в 10:44

2 ответа

Лучший ответ

В составной форме с 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--
1
naikus 2 Сен 2010 в 07:00

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

0
Community 23 Май 2017 в 12:19