文件上载可用于curl和postman,但不能用于python请求
我正在尝试使用python请求库将CSV文件上载到API(这给了我很少的错误信息) (我正在运行Python 3.5,并在OS X 10.11.6上使用请求版本2.18.4) 终端中的curl命令工作正常:文件上载可用于curl和postman,但不能用于python请求,python,python-3.x,curl,file-upload,python-requests,Python,Python 3.x,Curl,File Upload,Python Requests,我正在尝试使用python请求库将CSV文件上载到API(这给了我很少的错误信息) (我正在运行Python 3.5,并在OS X 10.11.6上使用请求版本2.18.4) 终端中的curl命令工作正常:curl-F'file=@/path/to/file.csv'myurl.com/upload-H“Authorization:tokensometoken” 来自Postman的多部分/表单数据POST请求也可以工作,但我似乎无法使它与python请求库一起工作 我尝试了此请求的多种变体:
curl-F'file=@/path/to/file.csv'myurl.com/upload-H“Authorization:tokensometoken”
来自Postman的多部分/表单数据POST请求也可以工作,但我似乎无法使它与python请求库一起工作
我尝试了此请求的多种变体:
import requests
headers = {'Authorization': 'TOKEN sometoken', 'Content-Type': 'multipart/form-data'}
with open(file_path, 'rb') as f:
r = requests.post(myurl, headers=headers, data=f)
## I've also tried data={"file": f}
我得到的状态代码是200,但响应是{“success”:“false”}
(令人沮丧的是没有帮助)
与curl请求相比,python请求缺少什么
EDIT:似乎curl
命令的-F
标志模拟了已提交的HTML表单……有没有办法处理请求?pythonopen()
返回一个文件对象。这不是您要发送到API的内容。相反,您可以使用:
with open(file_path, 'rb') as f:
r = requests.post(myurl, headers=headers, data=f.read())
语法取自。pythonopen()
返回文件对象。这不是您要发送到API的内容。相反,您可以使用:
with open(file_path, 'rb') as f:
r = requests.post(myurl, headers=headers, data=f.read())
语法取自。在
curl
代码中,您正在使用-F
参数,该参数以多部分消息的形式提交数据-换句话说,您正在上载文件。使用
请求
可以使用参数发布文件。例如:
import requests
headers = {'Authorization': 'TOKEN sometoken'}
data = {'file': open(file_path, 'rb')}
r = requests.post(myurl, headers=headers, files=data)
请注意,
请求
根据提交的数据自动创建内容类型标题 在curl
代码中,您正在使用-F
参数,该参数以多部分消息的形式提交数据,换句话说,您正在上载文件。使用
请求
可以使用参数发布文件。例如:
import requests
headers = {'Authorization': 'TOKEN sometoken'}
data = {'file': open(file_path, 'rb')}
r = requests.post(myurl, headers=headers, files=data)
请注意,
请求
根据提交的数据自动创建内容类型标题 不幸的是,这并没有奏效。我希望我能提供更多的信息,但我绝对没有错误信息。不幸的是,这并没有起作用。我希望我能提供更多的信息,但我绝对没有错误信息继续。这工作,谢谢!我注意到文档中的文件
参数,但他们只提到了它,这让我很反感。这是高级用法文档(如果你想上传多个同名文件),可能会让人困惑。中的例子更清楚。这很有效,谢谢!我注意到文档中的文件
参数,但他们只提到了它,这让我很反感。这是高级用法文档(如果你想上传多个同名文件),可能会让人困惑。这个例子更清楚。