POST一个多部分编码(Multipart-Encoded)的文件
Requests 使得上传多部分编码文件变得很简单:
url = ‘http://httpbin.org/post’
files = {‘file’: open(‘report.xls’, ‘rb’)}
r = requests.post(url, files=files)
r.text
{
…
“files”: {
“file”: “<censored…binary…data>”
},
…
}
你可以显式地设置文件名,文件类型和请求头:
url = ‘http://httpbin.org/post’
files = {‘file’: (‘report.xls’, open(‘report.xls’, ‘rb’), ‘application/vnd.ms-excel’, {‘Expires’: ‘0’})}
r = requests.post(url, files=files)
r.text
{
…
“files”: {
“file”: “<censored…binary…data>”
},
…
}
如果你想,你也可以发送作为文件来接收的字符串:
url = ‘http://httpbin.org/post’
files = {‘file’: (‘report.csv’, ‘some,data,to,send\nanother,row,to,send\n’)}
r = requests.post(url, files=files)
r.text
{
…
“files”: {
“file”: “some,data,to,send\nanother,row,to,send\n”
},
…
}
如果你发送一个非常大的文件作为 multipart/form-data 请求,你可能希望将请求做成数据流。默认下 requests 不支持, 但有个第三方包 requests-toolbelt 是支持的。你可以阅读 toolbelt 文档 来了解使用方法。