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

之前因为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)

你可能感兴趣的:(python,flask)