Python http使用请求库发布文件

时间:2013-12-07 19:53:56

标签: python http-post python-requests

我必须将一个文件和一些数据发布到api。 这是我为测试编写的python代码:

fl={'payload' : open('C:/data/log2.txt')}
params = {
        'topic':'pos',
        'store':storeID,
         }

r = requests.post(url,files=fl,data=params)

print r.status
print r.text

但我总是收到一条消息,“文件格式不正确”

我用POSTMAN测试了api(镀铬扩展以测试其余的API)并且它似乎与邮递员工作正常我得到了成功的响应并且文件被发送,这是一个快照。

api test using postman

1 个答案:

答案 0 :(得分:2)

From the docs

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('report.xls', 'rb')}

>>> r = requests.post(url, files=files)
>>> r.text
{
  ...
  "files": {
    "file": "<censored...binary...data>"
  },
  ...
}

尝试将'rb'添加到您的open语句中,以便上传二进制数据。

更改

fl={'payload' : open('C:/data/log2.txt')}

fl={'payload' : open('C:/data/log2.txt', 'rb')}