Какие правила применяются к границе MIME?
Когда вы пишете MIME, вы выделяете разные куски вашего сообщения с определенной границей. Мне почему-то не удалось найти документацию, объясняющую эту границу, но вот что я собрал из примеров:
-
Границей может быть любая строка букв и цифр, т.е. е. "D29a0c638b540b23e9a29a3a9aebc900aeeb6a82".
-
Нет правил для создания границы, вы можете просто md5sum имя вашего любимого, и вот вы идете, у вас есть ваша граница.
-
Если вы отправляете MIME через HTTP, вы должны добавить заголовок "Content-Type", указывающий, что вы это сделаете, а ваша граница, содержимое заголовка может выглядеть так:
многочастному/форм-данных; граница = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82
-
В теле вашего сообщения границе должна предшествовать "-", например:
- d29a0c638b540b23e9a29a3a9aebc900aeeb6a82
Но после этих правил (и этот полезный ответ) мне не удалось сгенерировать POST-запрос, который будет принимать сервер. Я что-то упускаю? У меня что-то не так?
Ответы
Ответ 1
Синтаксис границы:
boundary := 0*69<bchars> bcharsnospace
bchars := bcharsnospace / " "
bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
"+" / "_" / "," / "-" / "." /
"/" / ":" / "=" / "?"
И тело многочастного объекта имеет синтаксис (только важные части):
multipart-body := [preamble CRLF]
dash-boundary transport-padding CRLF
body-part *encapsulation
close-delimiter transport-padding
[CRLF epilogue]
dash-boundary := "--" boundary
encapsulation := delimiter transport-padding
CRLF body-part
delimiter := CRLF dash-boundary
close-delimiter := delimiter "--"
Предшествующий --
является обязательным для каждой границы, используемой в сообщении, а конечный --
является обязательным для границы закрытия (close-delimiter). Таким образом, многочастное тело с тремя частями тела с boundary
как граница может выглядеть так:
--boundary
1. body-part
--boundary
2. body-part
--boundary
3. body-part
--boundary--