步骤
- 构造要发送的文件数据元组,可一次发送多个文件
- 调用requests.post发出文件
url = 'https://xxxx.org/'
multiple_files = [
('images', ('1.png', open('foo.png', 'rb'), 'image/png')),
('images', ('2.png', open('bar.png', 'rb'), 'image/png'))]
r = requests.post(url, files=multiple_files)
文件数据元组参数说明:(http标签,(文件名,open文件,文件MIME格式)
注意不要自己在头部添加Content-Type: multipart/form-data;,因为这会妨碍requests库post时自动填充的Content-Type,正确的Content-Type是有每次随机生成用来标记传输的文件内容边界的boundary,如下:
POST /adapter/device/file
Authorization: e7ca4e6de6d8eaef34663958ccf3e072
Version: v1.0
Content-Disposition: form-data; description=[{“file_name”:”test.txt”,”type”:”sample”,”event_id”:”b5ca87aaaa”}] Host: xx.xx.xx.xx
Accept-Encoding: gzip,deflate,br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=------------- ac83f6b00d
Content-Length: 530
-------------ac83f6b00d
Content-Disposition: form-data; description=xxx NTY3NGRlZDA5OWY3NzdiNThkYThjOGEyYTUwNjk3YWM4M2Y2YjAwZCAgY3NvYy13ZWItYmFja2VuZ
C5qYXIK
-------------ac83f6b00d