我遇到了一个让我疯狂的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--
我无法以任何方式复制。
答案 0 :(得分:1)
您可以使用data
参数添加其他字段:
data = {'upload': ''}
r = session.post(post_image_url, files=files, data=data)
这只是提交按钮的值,在你的情况下是一个空字符串。