Если это ваша форма
<form action="something.php" method="post" enctype="multipart/form-data">
<input type="text" name="firstname" value="Peter">
<input type="text" name="lastname" value="Quill">
<input type="file" name="photo">
<input type="submit" value="Submit">
</form>
Вот как оно отправляется
------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="firstname"
Peter
------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="lastname"
Quill
------WebKitFormBoundarybHHp9cSVfgrymPhN
Content-Disposition: form-data; name="photo"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundarybHHp9cSVfgrymPhN--
Значение каждого поля формы охватывается границей. Интеллектуально вычисляется браузером граница, которая охватывает все текстовое поле формы, текстовые области и т. Д. (Включая необработанный поток данных файла входных файлов).
все это для того, чтобы избежать столкновения с разделителем . Браузеры будут префиксировать границу с соответствующим префиксом вендора, таким как webkit, но в итоге это всегда будет надежный разделитель.
Теперь, даже если вы получите в свои руки эту низкоуровневую сборку данных, создание действительно надежного разделителя будет трудной задачей, если у вас возникнут опасения по поводу ввода файлов. Вот почему вы должны позволить браузеру обрабатывать такие вещи, как предлагается Решение на основе формданных хорошо сочетается с этим.
enctype='multipart/form-data'
является единственным механизмом для отправки данных независимо от его природы, все остальные enctype (application/x-www-form-urlencoded
, text/plain
) просто поддерживают передачу ASCII. entype
(s), по сути, являются способом определения схемы браузера. следует использовать для отправки формы, но сама схема не ограничивается простыми формами, поскольку вы можете видеть их с помощью формданных.