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

在Python请求中使用数据二进制,python,curl,request,python-requests,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选项,我无法理解如何使用请求执行此操作 我将发布我当前的

我试图用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)

有人知道我将如何包括一个文件吗?

问题似乎是URL末尾缺少一个尾随斜杠“/”。如果没有尾随斜杠,服务器似乎会重定向到一个不存在的页面,您将得到404

要修复此问题,只需添加尾部斜杠:

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

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

files={'file':打开(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=请求。post('https://cleardata.proofhub.com/files/upload,files=文件,headers=创建_头)

您需要正确地输入文件名-我看不到post表单,所以我不知道应该是什么。

您是否尝试过读取文件
data=open(r“C:\Users\dlogan.CLEARDATA\Desktop\ProofHub Upload\test.txt“,'rb').read()
运行上述代码时会发生什么情况?@brunns这不起作用,相同的响应。@WillKeeling如果我得到一个API,我会联系该公司,看看这个响应到底是什么,然后回复给你。这消除了我的404错误,但是,我现在遇到了另一个问题,请求实际上没有做任何事情。谢谢你的帮助,你从技术上解决了这个问题。