python MultipartEncoder是一个用于构建multipart/form-data请求的模块,可以方便地处理上传文件的数据格式。在使用python进行文件上传时,常常需要用MultipartEncoder将上传的文件打包,然后通过requests.post等方法发送到服务器端。
以下是使用MultipartEncoder传输zip文件的完整攻略:
- 首先需要引用requests和MultipartEncoder模块。
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
- 使用MultipartEncoder,将文件等参数打包成multipart格式。以上传一个含有example.zip文件的表单为例:
m = MultipartEncoder({'title': 'example', 'type': 'zip', 'file': ('example.zip', open('example.zip', 'rb'), 'application/octet-stream')})
其中,'title'和'type'是表单中的非文件类型输入框的name和value,'file'是文件类型输入框的name、文件名以及文件本身,分别对应构造函数中的三个参数。
- 将MultipartEncoder实例通过requests.post等方法上传到服务器端。以上传到服务器地址为'http://www.example.com/upload'的服务器为例:
r = requests.post('http://www.example.com/upload', data=m, headers={'Content-Type': m.content_type})
其中,'Content-Type'设置为MultipartEncoder的content_type属性。
- 若上传成功,则服务器返回的response对象可以通过调用json/dict/text等方法获得服务器返回的信息。
示例1:上传单个文件
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
# 打开要上传的文件
file = open('example.zip', 'rb')
# 设置表单参数
m = MultipartEncoder({'title': 'example', 'type': 'zip', 'file': ('example.zip', file, 'application/octet-stream')})
# 上传文件到服务器
r = requests.post('http://www.example.com/upload', data=m, headers={'Content-Type': m.content_type})
# 判断上传是否成功
if r.status_code == 200:
print('文件上传成功')
else:
print('文件上传失败')
示例2:上传多个文件
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
# 打开要上传的文件
file1 = open('example1.zip', 'rb')
file2 = open('example2.zip', 'rb')
# 设置表单参数
m = MultipartEncoder({'title': 'examples', 'type': 'zip', 'file1': ('example1.zip', file1, 'application/octet-stream'), 'file2': ('example2.zip', file2, 'application/octet-stream')})
# 上传文件到服务器
r = requests.post('http://www.example.com/upload', data=m, headers={'Content-Type': m.content_type})
# 判断上传是否成功
if r.status_code == 200:
print('文件上传成功')
else:
print('文件上传失败')
以上就是使用python MultipartEncoder传输zip文件的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python MultipartEncoder传输zip文件实例 - Python技术站