Мне нужно извлечь закачки из http-trafic. Как это можно сделать? Прежде всего, запрос-метод будет POST. Во-вторых, будет поле заголовка Content-Type. Я не хочу извлекать форматированные данные, но загружается как почтовые приложения.
Что такое значение Content-Type в HTTP-запросе при загрузке содержимого?
Ответ 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 Чтение данных, а затем создание нового файла должно сделать трюк.