fields 参数 接收值: [(key,value),(k,v)] 此参数接收普通键值对数据,将键值对转换为multipart/form-data格式
files 接收值: [(key,filename,value) 此参数接收文件上传数据,将其对转换为multipart/form-data格式
def encode_multipart_formdata(fields, files):
u"""构造multipart_formdata参数"""
boundary = '---------------------------7e229e1a230202'
crlf = '\r\n'
l = []
for (key, value) in fields:
# name: 标签名
# value : 标签对应的值
l.append('--' + boundary)
l.append('Content-Disposition: form-data; name="%s"' % key)
l.append('')
l.append(value)
for (key, filename, value) in files:
# key : 标签名
# filename : 文件名
# value 文件内容
filename = filename
l.append('--' + boundary)
l.append(
'Content-Disposition: form-data; name="%s"; filename="%s"' % (
key, filename
)
)
l.append('Content-Type: image/x-png')
l.append('')
l.append(value)
l.append('--' + boundary + '--')
l.append('')
# 以 \r\n 为分隔符将列表链接为字符串
body = crlf.join(l)
content_type = 'multipart/form-data; boundary=%s' % boundary
return content_type, body
调用方式如下:
content_type, data = encode_multipart_formdata(
[('checkVehicleCode', self.today_code), ('uploadFileType1', ''), ('btnUpload123Flag', '1'), ('fticket', ''),
('checkVehicleCodeImg', '')], [('policyAttachment1', name, image['img_data'])])