Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件上载可用于curl和postman,但不能用于python请求_Python_Python 3.x_Curl_File Upload_Python Requests - Fatal编程技术网

文件上载可用于curl和postman,但不能用于python请求

文件上载可用于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请求库一起工作 我尝试了此请求的多种变体:

我正在尝试使用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请求库一起工作

我尝试了此请求的多种变体:

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表单……有没有办法处理请求?

python
open()
返回一个文件对象。这不是您要发送到API的内容。
相反,您可以使用:

with open(file_path, 'rb') as f:
    r = requests.post(myurl, headers=headers, data=f.read())
语法取自。

python
open()
返回文件对象。这不是您要发送到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)

请注意,
请求
根据提交的数据自动创建内容类型标题

不幸的是,这并没有奏效。我希望我能提供更多的信息,但我绝对没有错误信息。不幸的是,这并没有起作用。我希望我能提供更多的信息,但我绝对没有错误信息继续。这工作,谢谢!我注意到文档中的
文件
参数,但他们只提到了它,这让我很反感。这是高级用法文档(如果你想上传多个同名文件),可能会让人困惑。中的例子更清楚。这很有效,谢谢!我注意到文档中的
文件
参数,但他们只提到了它,这让我很反感。这是高级用法文档(如果你想上传多个同名文件),可能会让人困惑。这个例子更清楚。