欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flask文件下载send_from_directory中文报错处理

程序员文章站 2022-06-17 10:56:49
...

之前因为flask_restful接受中文参数有问题改了系统默认编码

sys.setdefaultencoding('utf8')

本来以为之后就没有中文问题了,没想到文件下载send_from_directory有个坑,运行下面代码报错

return send_from_directory(dirpath, filename, as_attachment=True)

TypeError: must be unicode, not str

看网上说用下面代码,使用make_response可以处理中文问题,结果还是没用

response = make_response(send_from_directory(directory, filename, as_attachment=True))
    response.headers["Content-Disposition"] = "attachment; filename={}".format(filename.encode().decode('latin-1'))

细看报错过程,是send_from_directory方法,make_response还没运行调用呢。考虑编码问题直接出在filename上,因此尝试如下代码,验证没有问题

send_from_directory(dirpath, filename.encode('utf-8').decode('utf-8'), as_attachment=True)

相关标签: flask