在Web开发中,downloadHandler
通常用于处理文件下载请求。当用户点击一个下载链接或按钮时,服务器会生成一个文件并提供下载。downloadHandler
中的文件名是用户下载文件时看到的文件名。
文件名可以是静态的,也可以是动态生成的。动态生成的文件名可以根据请求中的参数、当前时间戳或其他业务逻辑来确定。
原因:不同浏览器和操作系统对文件名的编码处理可能不同,导致文件名显示乱码。
解决方法:
Content-Disposition
头部的filename*
参数,并指定编码方式。from flask import Flask, send_file
app = Flask(__name__)
@app.route('/download')
def download_file():
file_path = 'path/to/your/file.txt'
return send_file(file_path, as_attachment=True, attachment_filename='文件名.txt', mimetype='text/plain')
if __name__ == '__main__':
app.run()
原因:文件名中可能包含路径遍历攻击的非法字符,如../
。
解决方法:
import re
def sanitize_filename(filename):
return re.sub(r'[^\w\.-]', '_', filename)
@app.route('/download')
def download_file():
file_path = 'path/to/your/file.txt'
original_filename = '文件名.txt'
sanitized_filename = sanitize_filename(original_filename)
return send_file(file_path, as_attachment=True, attachment_filename=sanitized_filename, mimetype='text/plain')
希望这些信息对你有所帮助!如果有更多问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云