等效的python请求调用CURL请求上传图像

时间:2014-03-26 17:56:22

标签: python curl python-requests

我正在使用Python请求模块,但无论我尝试上传图片,它都会成功,但是图片在打开/阅读时会出错。 我将图像编码为base64,设置内容类型标题(image / png,image / jpeg等...)等...

无论如何,我使用CURL执行以下操作并且它可以工作:

curl -u test@test.ca:test -H 'Content-Type: image/jpeg' --data-binary @test.jpeg -X POST 'https://test.test.com/api/upload.json?filename=test.jpeg'

与python(headers等等)中的请求模块的请求相当于什么?

2 个答案:

答案 0 :(得分:1)

headers = {'Content-Type' : 'image/jpeg'}
params = {'filename' : 'test.jpg'}
r = requests.post("https://test.test.com/api/upload.json",
                   auth=('user','pw'), headers=headers, params=params)

答案 1 :(得分:1)

要重现curl命令,您无需在base64中对图像进行编码:--data-binary @test.jpeg curl选项按原样发送test.jpeg文件:

import requests

r = requests.post('https://example.com/api/upload.json?filename=test.jpeg', 
                  data=open('test.jpeg', 'rb'), 
                  headers={'Content-Type': 'image/jpeg'},
                  auth=('test@test.ca', 'test')) # username, password