Что такое «-» в multipart / form-data? - PullRequest
14 голосов
/ 18 августа 2010

Я хочу задать вопрос о данных multipart / form.Я нахожу заголовок http для составной записи и Content-Type: multipart / form-data;граница = -----...--- boundaryNumber.Я хочу спросить, сколько из '-' между borderNumber и '='?

Ответы [ 4 ]

31 голосов
/ 18 августа 2010

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

Обратите внимание, однако, что когда вы используете границу в потоке, она должна начинаться с двух дефисов (--).Это часть протокола.Конечно, тот факт, что большинство пользовательских агентов используют много дефисов на своей границе, очень трудно увидеть в качестве примера.

Кроме того, граница last (которая обозначает конецсообщение) с префиксом и с суффиксом двух дефисов (--).

Итак, в итоге вы можете назвать границу OMGWTFPLZDIEKTHX, и тогда ваш трафик может выглядеть так:

Content-Type: multipart/form-data; boundary=OMGWTFPLZDIEKTHX

--OMGWTFPLZDIEKTHX
Content-Type: text/plain

First part (plain text).
--OMGWTFPLZDIEKTHX
Content-Type: text/html

<html>Second part (HTML).</html>
--OMGWTFPLZDIEKTHX--
2 голосов
/ 18 августа 2010

Количество штрихов зависит от того, сколько вы там хотите.Если хотите, он может быть нулевым - просто больше штрихов делает границу более очевидной.

Граница состоит из линии, содержащей две штрихи плюс все после «border =».Так что, если ваш заголовок сказал boundary=ABC, граница выглядит как

--ABC
1 голос
/ 18 августа 2010

Это совершенно произвольно.

Точка границы - определить начало и конец ваших данных.Неважно, что это такое, если оно не является частью контента.

1 голос
/ 18 августа 2010

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

Это объяснено в RFC 1341 (MIME) , и вы можете найти дополнительную информацию там в разделе Multipart (по ссылке).

...