Что такое значение Content-Type в HTTP-запросе при загрузке содержимого?

Мне нужно извлечь закачки из http-trafic. Как это можно сделать? Прежде всего, запрос-метод будет POST. Во-вторых, будет поле заголовка Content-Type. Я не хочу извлекать форматированные данные, но загружается как почтовые приложения.

Ответ 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().

Ответ 2

Если (и я никоим образом не говорю, что это правильный путь), вы просто хотите сохранить данные из массива байтов, вы должны посмотреть, как читать тело POST: Чтение тела POST с bottle.py Чтение данных, а затем создание нового файла должно сделать трюк.