在Python请求中使用数据二进制文件

时间:2019-04-18 15:10:42

标签: python curl request python-requests

我正在尝试在python中表示以下curl语句:

curl --data-binary @sample.png --data project = 23423233 -H 'X-API-KEY: YOUR API KEY, User-Agent: AppName (name@example.com)' https://files.proofhub.com/files/upload

我已经完成了多个post&get请求,但是由于此请求使用data选项,所以我无法理解如何使用请求执行此请求。

我将发布当前代码:

data = open(r"C:\Users\dlogan.CLEARDATA\Desktop\ProofHub Upload\test.txt",'rb')

create_headers = {'X-API-KEY': '', 'Content-Type': 'application/json', 'User-Agent': '@cleardata.co.uk'}

r = requests.post('https://cleardata.proofhub.com/files/upload', data=data, headers=create_headers)

有人知道我将如何添加文件吗?

2 个答案:

答案 0 :(得分:2)

问题似乎是您在网址末尾缺少斜杠“ /”。如果没有结尾斜杠,服务器似乎将重定向到不存在的页面,并且您会收到404。

要解决此问题,只需添加一个斜杠:

requests.post('https://cleardata.proofhub.com/files/upload/', data=data, headers=create_headers)
#                                               Add slash ^

答案 1 :(得分:1)

我认为您需要使用files参数将文件作为表单数据发布。

files = {'file': open(r"C:\Users\dlogan.CLEARDATA\Desktop\ProofHub Upload\test.txt",'rb')
} 
create_headers = {'X-API-KEY': '', 'Content-Type': 'application/json', 'User-Agent': '@cleardata.co.uk'}
r = requests.post('https://cleardata.proofhub.com/files/upload', files=files, headers=create_headers)

您需要正确设置文件名-我看不到邮寄表格,所以我不知道该怎么办。