You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 01:03:09