gpt4 book ai didi

python-requests - 如何访问 MultipartDecoder 中的字段名称

转载 作者:行者123 更新时间:2023-12-04 13:40:35 26 4
gpt4 key购买 nike

我正在使用 request-toolbelt 解码通过 HTTP POST 请求提交的表单字段.我成功实例化了一个 MultipartDecoder如描述 here .现在我想通过发送请求时给它们的名称访问表单字段。

我能够得到这样的字段的名称

from requests_toolbelt.multipart import decoder
multipart_string = b"--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 = decoder.MultipartDecoder(multipart_string, content_type)
field_name = decoder.parts[0].headers[b'Content-Disposition'].decode().split(';')[1].split('=')[1]

但这似乎大错特错。访问表单字段名称的常用方法是什么?

最佳答案

我在下面使用它来解码该方法的结果:

    lst = []
for part in decoder.MultipartDecoder(postdata.encode('utf-8'), content_type_header).parts:
disposition = part.headers[b'Content-Disposition']
params = {}
for dispPart in str(disposition).split(';'):
kv = dispPart.split('=', 2)
params[str(kv[0]).strip()] = str(kv[1]).strip('\"\'\t \r\n') if len(kv)>1 else str(kv[0]).strip()
type = part.headers[b'Content-Type'] if b'Content-Type' in part.headers else None
lst.append({'content': part.content, "type": type, "params": params})

我假设因为它是一个标准的 Mime header ,所以有一些函数可以做同样的事情,但代码也更少。

关于python-requests - 如何访问 MultipartDecoder 中的字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57790416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com