Cherrypy文件上传非ASCII文件名乱码问题解决
2024-10-13 14:42:17
Cherrypy 版本: 18.0.1
由于某些特殊原因(可能是与标准兼容的问题),Cherrypy对上传文件的原文件名使用 ISO-8859-1 编码方式解码,导致非 ASCII 的文件名显示为乱码。
解决的方式也很简单,只需要对文件名使用 ISO-8859-1 编码然后在使用 UTF-8 重新解码即可。
以下是一个完整的例子:
from os import makedirs
from os.path import dirname, join as pathjoin, exists as pathexists
from cherrypy import expose, quickstart, request, config HERE = dirname(__file__)
UPLOAD_FOLDER = pathjoin(HERE, 'uploads') def repaire_filename(filename):
return filename.encode('ISO-8859-1').decode('utf-8', 'replace') def save_uploadfiles(files, folder=UPLOAD_FOLDER):
if not pathexists(folder):
makedirs(folder)
if not isinstance(files, list):
files = [files]
for upload in files:
if not upload.filename:
continue
basename = repaire_filename(upload.filename)
filename = pathjoin(folder, basename)
with upload.file as upload_file, open(filename, 'wb') as to_save:
while True:
buf = upload_file.read(8192)
if not buf:
break
to_save.write(buf) @expose
def index(upload_files=None):
if request.method == 'POST':
save_uploadfiles(upload_files)
return '''
<form method="POST" enctype="multipart/form-data">
<div><input name="upload_files" type="file" /></div>
<div><input name="upload_files" type="file" /></div>
<div><input name="upload_files" type="file" /></div>
<input type="submit" />
</form>
''' if __name__ == '__main__':
quickstart(index)
最新文章
- 实例操作JSONP原理
- ThinkPhp 验证码不显示图片
- dell r710xd 通过远程管理卡安装系统
- R语言之中文分词:实例
- hdu----(5045)Contest(数位dp)
- freemarker编辑器eclipse插件
- 面试体验:Google 篇(转)
- kubuntu/ubuntu下安装fcitx输入法
- .Net程序员学用Oracle系列(9):系统函数(上)
- OPENCV基本滤波算法
- mongodb 面试题总结
- 【三分模板】洛谷P3382三分模板
- win10预览版无开始菜单解决方案
- 五十八、linux 编程——UDP 编程 广播
- 使用querybuilder做忽略大小写查询的例子
- python3 第二十五章 - comprehensions(推导式)
- Stetho简化Android调试(一)
- centos7 jmeter分布式安装
- 洛谷P2619 [国家集训队2]Tree I(带权二分,Kruscal,归并排序)
- mybatis 于 hibernate区别
热门文章
- Nginx 动静分离与负载均衡的实现
- Java 8中用法优雅的Stream,性能也";优雅";吗?
- 机器学习 GBDT+xgboost 决策树提升
- docker commit命令创建新的镜像
- SpringBoot入门教程(十)应用监控Actuator
- 初学Java Web(3)——第一个Servlet
- 补习系列(2)-springboot mime类型处理
- 开源库支付库Magicodes.Pay发布
- Linux下Tomcat开启查看GC信息
- springboot情操陶冶-web配置(三)