一、问题描述
Python的Flask项目,做上传下载时按照原文件名进行,偶尔会出现中文文件名,当执行下载时在IE中会出现乱码问题,下面是解决方案。
二、解决方案
from flask import make_response, send_from_directory
from urllib.parse import quote # for python3
# from urllib import quote for python2
@app.route('/file/download/<filename>', methods=['GET'])
def file_download():
file_name=request.values['file_name'] # 文件名
file_path= request.values['file_paht'] # 文件路径
resopnse = make_response(send_from_directory(file_path, as_attachment=True, attachment_filename=file_name))
utf_filename=quote(file_name.encode('utf-8')
response.headers["Content-Disposition"] = "attachment;filename*=UTF-8''{}".format(utf_filename)
response.headers['Content-Type'] = "application/octet-stream; charset=UTF-8"
return response