flask提供了send_from_directory方法来下载文件,使用很方便,但是在下载的文件名中包含中文就会出问题。
修改之前的代码:
send_from_directory(dir_path, file_name, as_attachment=True,
attachment_filename="中文名.xlsx")
# dir_path: 要下载的文件的文件夹
# file_name: 要下载的文件名
# attachment_filename:下载之后的文件名 即浏览器下载的时候展示的文件名
如果不对attachment_filename的值做处理的话,浏览器会识别不出来中文,下载的文件名不对
处理之后的代码:
from urllib.parse import quote
download_file_name = "试卷分析-{}.xlsx"
download_file_name = quote(download_file_name)
rv = send_from_directory(dir_path, file_name, as_attachment=True,
attachment_filename=download_file_name)
rv.headers['Content-Disposition'] = "; filename*=utf-8''%s" % (download_file_name)
这样下载到本地的文件名就是attachment_filename指定的文件名了