Python 请求,如何将 content-type 添加到 multipart/form-data 请求
Python requests, how to add content-type to multipart/form-data request
我使用 python 请求通过 PUT 方法上传文件。
远程 API 仅当 body 包含属性时才接受任何请求
Content-Type:i mage/png 不符合要求 Header
当我使用 python 请求时,请求被拒绝,因为缺少属性
我尝试使用代理,在添加缺少的属性后,它被接受了
查看突出显示的文字
但我无法以编程方式添加它,我该怎么做?
这是我的代码:
files = {'location[logo]': open(fileinput,'rb')}
ses = requests.session()
res = ses.put(url=u,files=files,headers=myheaders,proxies=proxdic)
根据[文档][1,您需要向元组、文件名和内容类型添加另外两个参数:
# field name filename file object content=type
files = {'location[logo]': ("name.png", open(fileinput),'image/png')}
您可以在下面查看示例:
In [1]: import requests
In [2]: files = {'location[logo]': ("foo.png", open("/home/foo.png"),'image/png')}
In [3]:
In [3]: ses = requests.session()
In [4]: res = ses.put("http://httpbin.org/put",files=files)
In [5]: print(res.request.body[:200])
--0b8309abf91e45cb8df49e15208b8bbc
Content-Disposition: form-data; name="location[logo]"; filename="foo.png"
Content-Type: image/png
�PNG
IHDR��:d�tEXtSoftw
为了将来参考,this comment 在旧的相关问题中解释了所有变体:
# 1-tuple (not a tuple at all)
{fieldname: file_object}
# 2-tuple
{fieldname: (filename, file_object)}
# 3-tuple
{fieldname: (filename, file_object, content_type)}
# 4-tuple
{fieldname: (filename, file_object, content_type, headers)}
我使用 python 请求通过 PUT 方法上传文件。
远程 API 仅当 body 包含属性时才接受任何请求 Content-Type:i mage/png 不符合要求 Header
当我使用 python 请求时,请求被拒绝,因为缺少属性
我尝试使用代理,在添加缺少的属性后,它被接受了
查看突出显示的文字
但我无法以编程方式添加它,我该怎么做?
这是我的代码:
files = {'location[logo]': open(fileinput,'rb')}
ses = requests.session()
res = ses.put(url=u,files=files,headers=myheaders,proxies=proxdic)
根据[文档][1,您需要向元组、文件名和内容类型添加另外两个参数:
# field name filename file object content=type
files = {'location[logo]': ("name.png", open(fileinput),'image/png')}
您可以在下面查看示例:
In [1]: import requests
In [2]: files = {'location[logo]': ("foo.png", open("/home/foo.png"),'image/png')}
In [3]:
In [3]: ses = requests.session()
In [4]: res = ses.put("http://httpbin.org/put",files=files)
In [5]: print(res.request.body[:200])
--0b8309abf91e45cb8df49e15208b8bbc
Content-Disposition: form-data; name="location[logo]"; filename="foo.png"
Content-Type: image/png
�PNG
IHDR��:d�tEXtSoftw
为了将来参考,this comment 在旧的相关问题中解释了所有变体:
# 1-tuple (not a tuple at all)
{fieldname: file_object}
# 2-tuple
{fieldname: (filename, file_object)}
# 3-tuple
{fieldname: (filename, file_object, content_type)}
# 4-tuple
{fieldname: (filename, file_object, content_type, headers)}