Flask send_file函数无法完成文件下载,Chrome端下载中断求助
Flask send_file 下载7z文件无法完成的排查方案
问题描述
使用Flask的send_file函数下载.7z文件时,Chrome浏览器能触发下载但始终无法完成,代码如下:
send_file("somefile.7z", as_attachment=True)
已尝试:检查网络稳定性、查看Flask控制台、重启Chrome浏览器。
排查与解决步骤
确认文件路径与权限
确保somefile.7z的路径正确(优先用绝对路径,避免相对路径导致文件找不到),同时Flask进程有读取该文件的权限。可在代码中添加验证:import os print(os.path.exists("somefile.7z")) # 输出True表示路径正确 print(os.access("somefile.7z", os.R_OK)) # 输出True表示有读取权限手动指定MIME类型
浏览器可能因无法识别.7z的MIME类型导致下载异常,给send_file添加mimetype参数:send_file("somefile.7z", as_attachment=True, mimetype="application/x-7z-compressed")关闭Flask调试模式
开发环境下的调试模式可能引发文件传输问题,尝试关闭调试模式运行:if __name__ == "__main__": app.run(debug=False)校验文件完整性
确认somefile.7z本身未损坏,尝试本地直接打开该文件,若文件损坏则下载必然无法完成。改用send_from_directory函数
对于静态文件下载,send_from_directory比send_file更稳定,尤其适合压缩文件场景:from flask import send_from_directory import os @app.route('/download') def download_file(): file_dir = os.path.dirname(os.path.abspath(__file__)) # 获取当前脚本所在目录 return send_from_directory(file_dir, "somefile.7z", as_attachment=True, mimetype="application/x-7z-compressed")排查Chrome浏览器干扰
清除Chrome下载记录(设置>隐私和安全>清除浏览数据>勾选下载记录),或用隐身模式测试,排除缓存、插件等干扰因素。
内容的提问来源于stack exchange,提问作者Snowman6
相关产品推荐
相关产品推荐

