多平台统一管理软件接口,如何实现多平台统一管理软件接口
472
2022-08-28
使用python requests库上传文件时,name和filename乱码问题(使用python需要安装哪些软件)
一.问题描述
在使用post方法请求接口时,请求的内容中包含附件(例如图片):
服务器需要用到图片的名称字段,来解析得到图片的分类信息(例如,这张图片属于子单照片,即name属性为【864_子单照片_0】)
但是发送请求后,服务器报错“必填参数为空”,抓包分析发现上传附件的文件名不正确,导致服务器无法正确解析文件名。
如上图所示:参数name与filename中有中文信息,请求时会自动将中文编码后再上传文件信息,导致服务器无法解析编码后的内容。从而导致服务器无法正确解析文件名。
二.相关代码
#coding=UTF-8import requests Base_URL = ' def build_uri(endpoint): return '/'.join([Base_URL, endpoint]) def post_method(url,data,files): response = requests.post(url=url,data=data,files=files) print(response.text) if __name__ == '__main__': file_name1 = 'value_1.txt' with open(file_name1) as f1: con = f1.read() print(type(con)) print(con) data = {"req": con} headers = {"content-type": "multipart/form-data"} files = {'864_子单照片_0': ("001_附件.jpg", open("001_附件.jpg", "rb"), "image/jpg", {})} url = build_uri('mobile/postQCProblemCargo') post_method(url, data, files)
三.解决方法
修改requests库所引用的urllib3库的源文件fields.py:
1、注释掉图中标记的一行(45行)
2、把图中标记的一行(46行)修改为:
value = '%s="%s"' % (name, value)
四.修改后请求抓包结果
问题已解决。
去期待陌生,去拥抱惊喜。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~