Ответ 1
Тип содержимого для каждой спецификации multipart/form-data
.
Это специальный тип контента, который можно визуализировать как несколько подзапросов в одном большом запросе. Каждый из этих подзапросов (один элемент данных формы) имеет свой собственный набор заголовков. Тип содержимого фактических данных находится там.
Вот пример, как это выглядит с 1 нормальным полем и 1 файловым полем (в выражениях HTML при использовании <input name="textfield"><input type="file" name="filefield">
):
Content-Type: multipart/form-data;boundary=SOME_BOUNDARY
--SOME_BOUNDARY
content-disposition: form-data;name="textfield"
content-type: text/plain;charset=UTF-8
value of textfield here
--SOME_BOUNDARY
content-disposition: form-data;name="filefield";filename="some.ext"
content-type: application/octet-stream
binary file content here
--SOME_BOUNDARY--
Что касается разбора и извлечения этих данных, практически для каждого языка программирования для этого есть встроенные/сторонние API. Поскольку вы ничего не рассказывали о том, какой из них используете, невозможно дать целенаправленный ответ. В случае, например, Java, это будет либо сторонняя библиотека Apache Commons FileUpload, либо когда вы используете Servlet 3.0, предоставленный API request.getPart()
.