2015-05-27 50 views
2

我遇到一些POST请求令我疯狂的问题。我试图通过复制原始请求Python请求图像上传HTTP POST

首先要上传使用POST使用python请求的图像,这是原来的请求,我可以使用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

你可以用data参数添加额外的字段:

data = {'upload': ''} 

r = session.post(post_image_url, files=files, data=data) 

这是提交按钮的只是价值,你的情况为空字符串。

+0

它像一个魅力,非常感谢你! – cnxw