Python 请求图片上传 HTTP POST

Python 请求图片上传 HTTP POST

我在 POST 请求方面遇到了一些问题,这让我很抓狂。我试图通过复制原始请求,使用 python 请求通过 POST 上传图片

首先,这是我用Firebug可以看到的原始请求,请求头是:

Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.7,it;q=0.3
Cache-Control no-cache
Connection keep-alive
Content-Length 26051
Content-Type multipart/form-data; boundary=--------------------------- 37693668010849786771875799013
Cookie some cookie
DNT 1
Host my.host.com
Pragma no-cache
Referer https://my.host.com/postad/1dc185ff9e814068be23ed674956a190
User-Agent Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0
X-Requested-With XMLHttpRequest

以及 POST 请求的主体:

-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="image"; filename="clip.jpg"
Content-Type: image/jpeg

ÿØÿà�JFIF������ÿÛ�C�     .....
-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="upload"


-----------------------------5697279162042627623887894974--

这是我用来上传图像的代码:

files = {'image': ('clip.jpg', open('clip.jpg', 'rb'))}
post_image_url = "https://my.host.com/postad/563a533d9105448dbaf853f7ca0265fa/images"
r = session.post(post_image_url, files=files)

但我总是得到 404 错误,假设请求不正确。我想我必须调整请求以反映使用 Firebug 检查的原始请求。我认为请求不完整,我可能遗漏了请求的最后一部分:

-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="upload"


-----------------------------5697279162042627623887894974--

我无法以任何方式复制。

任何想法?

感谢

答案1

如果将来有人需要,就添加此回复。

请参阅以下用于在 Python 请求中发送图像文件的代码。此处的 logo 是图像文件的关键字,我们的其中一台服务器将其作为输入接受。因此给出了“logo”。此外,请确保从标题中删除“Content-type”。

response = requests.post(url,data=data,headers=headers, files={'logo':open("your_image_file.jpeg",'rb')})

答案2

我找到了解决方案,非常简单:

 data = {'upload': ''}

我需要以这种方式传递上传字符串,然后瞧!

相关内容