winput=env["wsgi.input"]
params=cgi.FieldStorage(fp=io.StringIO(winput.read(int(env.get("CONTENT_LENGTH","0"))).decode("ISO-8859-1")),environ=env,keep_blank_values=1)
print(params["file"].name)
print(params["file"].filename.encode("ISO-8859-1").decode("UTF-8"))
print(params["file"].value.encode("ISO-8859-1"))
params=cgi.FieldStorage(fp=io.StringIO(winput.read(int(env.get("CONTENT_LENGTH","0"))).decode("ISO-8859-1")),environ=env,keep_blank_values=1)
这句代码有必要解释一下:
1、不能直接用winput。如果直接使用wsgi.input,readline出来的都是bytes,而在cgi.FieldStorage里判断全部用的是字符串,在bytes隐式转换为str时会自动加b'',导致判断不成功,知道最后一条readline语句,服务器一直等待输入。。
2、必须使用decode对wsgi.input读取的数据进行解码,不能用str(),原因同上
3、FieldStorage解释完成后得到的value是字符串,如果你上传的是图片或者其他二进制数据,就要再将字符串encode成bytes
4、在上面的代码中filename被FieldStorage解释完毕后是被decode成ISO-8859-1编码的字符串,如果存在中文,就必须用encode再decode
总结:
FieldStorage里的代码好象还是2.x时候的代码,没有考虑到wsgi.input获取到的是bytes的情况。自己处理编码确实很麻烦。哪位仁兄写个增强版的出来请告诉我。
分享到:
- 2009-04-12 14:53
- 浏览 4842
- 评论(0)
- 论坛回复 / 浏览 (0 / 3789)
- 查看更多
相关推荐
python库。 资源全名:gm-3.0.0.14-py3-none-win32.whl
audit-3.0-5.se.07.ky10.aarch64.rpm升级包
资源分类:Python库 所属语言:Python 资源全名:python_gdcm-3.0.9.0-cp36-cp36m-win32.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库。 资源全名:tencentcloud-sdk-python-ecm-3.0.311.tar.gz
python库,解压后可用。 资源全名:tencentcloud_sdk_python-3.0.300-py2.py3-none-any.whl
clusterlib-3.0.12.1-84.el6.x86_64.rpm clusterlib-3.0.12.1-84.el6.x86_64.rpm
python库。 资源全名:tencentcloud-sdk-python-tia-3.0.270.tar.gz
资源分类:Python库 所属语言:Python 资源全名:xquant_python-3.0.290-cp36-none-win_amd64.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
资源分类:Python库 所属语言:Python 资源全名:tencentcloud-sdk-python-api-3.0.418.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
python库。 资源全名:gm-3.0.0.28-py2-none-win_amd64.whl
wxPython是一个优秀且免费开源的Python图形界面开发包,wxPython提供了多种不同的窗口部件,包括了静态文本、可编辑的文本、按钮、微调、滑块、复选框、单选按钮、选择器、列表框、组合框和标尺等等,借助wxPython将...
wxPython3.0-win32-3.0.2.0-py26.exe.............................
资源来自pypi官网。 资源全名:tencentcloud-sdk-python-apigateway-3.0.553.tar.gz
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:gm-3.0.0.7-py2-none-win32.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Polygon3-3.0.9.1-cp36-cp36m-linux_aarch64是jeson上使用的whl包,一般是部署python版本paddleocr时候可能用到
python库。 资源全名:tencentcloud-sdk-python-3.0.368.tar.gz
python库。 资源全名:NURBS_Python-3.0.00-py2-none-any.whl
资源来自pypi官网。 资源全名:tencentcloud-sdk-python-yunsou-3.0.448.tar.gz