在Python3.0中处理web请求7-文件上传(使用cgi.FieldStorage)

 

    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的情况。自己处理编码确实很麻烦。哪位仁兄写个增强版的出来请告诉我。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: polygon3-3.0.9.1-cp310-cp310-win-amd64.whl 是一个 Python 库的文件名,其 polygon3 表示这是一个用于计算几何问题的库。3.0.9.1 表示该库的版本号为 3.0.9.1。cp310-cp310 表示该库支持 Python 3.10 版本,并且是专为该版本编译的。win-amd64 表示该库适用于 Windows 64 位操作系统。 .whl 是 Python 的一种第三方库分发格式,通常是以二进制形式提供,可以轻松安装它,而无需在源代码上编译。因此,如果您使用的是 Windows 64 位操作系统,且正在使用 Python 3.10 版本,您可以直接从该文件名指定的地方下载并安装 polygon3-3.0.9.1-cp310-cp310-win-amd64.whl 库,从而开始使用该库提供的计算几何功能。 总之,该文件名是用于标识 Python 计算几何库的名称,版本号,支持Python 的版本和操作系统类型,以及库的分发格式。 ### 回答2: polygon3-3.0.9.1-cp310-cp310-win-amd64.whl是一个Python模块,适用于Windows 64位操作系统,运行Python 3.10版本及以上。它包含了用于解决计算几何问题的算法和数据结构,如点、线段、多边形、凸包、最近邻点等。通过运用polygon3这个模块,可以在Python方便地进行计算几何问题的求解。 这个模块的使用需要先在本地安装Python环境,然后使用pip命令安装这个whl文件。安装之后,可以在Python代码导入模块,使用其提供的函数和类进行计算几何问题的解决。 此外,polygon3还提供了一些实用的工具,如绘制几何图形、计算面积、判断点是否在多边形内等。使用这些工具可以更好地展示计算几何问题的解决过程,并更好地理解算法和数据结构的实现。 总之,polygon3-3.0.9.1-cp310-cp310-win-amd64.whl是一个强大的计算几何模块,提供了丰富的算法和工具,方便Python用户快速地解决计算几何问题。 ### 回答3: polygon3-3.0.9.1-cp310-cp310-win-amd64.whl是一个Python包的文件名,它为Windows 64位操作系统提供了polygon3库的安装文件。polygon3库是一个强大的几何计算库,可以用于处理各种几何形状,如多边形、三角形、矩形等等。这个库还具有多种数据结构和算法,可以用于空间分析和数据建模。这个文件是一个python wheel文件,也就是一个预编译的Python软件包,它可以很方便地安装到Python环境,一般使用pip install命令即可完成安装。在安装后,可以使用import polygon3来导入库,并可按照库文档进行调用和使用。该库可以广泛应用于各种领域,如GIS、计算机图形学、人工智能等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值