Разобрать строку составного запроса в Python

1

У меня есть строка, подобная этой

"--5b34210d81fb44c5a0fdc1a1e5ce42c3\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\nJohn Smith\r\n--5b34210d81fb44c5a0fdc1a1e5ce42c3\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example2.txt\"\r\nContent-Type: text/plain\r\nExpires: 0\r\n\r\nHello World\r\n--5b34210d81fb44c5a0fdc1a1e5ce42c3--\r\n"

У меня также есть заголовки запросов, доступные в других vairbles.

Как легко разобрать это с помощью Python3?

Я обрабатываю загрузку файла в AWS Lambda через API-шлюз, тело запроса и заголовки доступны через Python dicts.

В stackoverflow есть другие подобные вопросы, но большинство из них предполагает использование модуля requests или других модулей и ожидает, что данные запроса будут находиться в определенном объекте или формате.

ПРИМЕЧАНИЕ. Я знаю, что можно загрузить пользователя на S3 и запустить Lambda, но я намеренно предпочитаю не делать этого в этом случае.

Теги:
aws-lambda
aws-api-gateway

1 ответ

3
Лучший ответ

Его можно проанализировать, используя что-то вроде

from requests_toolbelt.multipart import decoder
multipart_string = "--ce560532019a77d83195f9e9873e16a1\r\nContent-Disposition: form-data; name=\"author\"\r\n\r\nJohn Smith\r\n--ce560532019a77d83195f9e9873e16a1\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example2.txt\"\r\nContent-Type: text/plain\r\nExpires: 0\r\n\r\nHello World\r\n--ce560532019a77d83195f9e9873e16a1--\r\n"
content_type = "multipart/form-data; boundary=ce560532019a77d83195f9e9873e16a1"
decoder.MultipartDecoder(multipart_string, content_type)
  • 2
    Надеемся, что вы обнаружите, что multipart/form-data достаточно как content_type ... потому что граничная строка - это не то, что вы должны найти для себя, и обычно она варьируется для каждого сообщения.
  • 1
    Спасибо за информацию. Казалось, что MultipartDecoder мог на самом деле требовать границы в заголовке для разбора составной строки. В итоге я реализовал его, чтобы в любом случае использовать правильный mime-тип, который был доступен в других переменных, представленных AWS Lambda.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню