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

如何使用Flask框架send_file发送zip文件 下载空压缩包问题求助

Flask内存Zip文件下载为空问题修复方案

核心错误原因

  • 缺少os模块导入:代码中调用了os.path.basename方法但未导入对应模块,会触发运行时异常,干扰响应生成
  • MIME类型配置错误:send_file的mimetype参数需填写标准值application/zip,填写zip不符合HTTP规范,会导致浏览器识别文件异常
  • 版本兼容问题:Flask 2.0及以上版本已弃用attachment_filename参数,替换为download_name参数,参数不匹配会导致响应构造失败
  • 路径逻辑问题:原有代码创建ZipInfo时传入了本地完整路径,打包后的文件会携带不必要的目录层级,不符合常规使用需求

修正后可运行代码

场景1:打包多个文本文档到内存Zip(匹配你的需求)

import os
from flask import send_file
import io
import zipfile
import time

@app.route('/downloads/', methods=['GET'])
def download():
    # 可自行替换为业务场景下的实际文本内容列表
    text_files = [
        {"filename": "doc1.txt", "content": "第一个文本文档的内容"},
        {"filename": "doc2.txt", "content": "第二个文本文档的内容"}
    ]
    fileobj = io.BytesIO()
    with zipfile.ZipFile(fileobj, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        for file in text_files:
            zip_info = zipfile.ZipInfo(file["filename"])
            zip_info.date_time = time.localtime(time.time())[:6]
            zip_file.writestr(zip_info, file["content"])
    fileobj.seek(0)

    return send_file(
        fileobj,
        mimetype='application/zip',
        as_attachment=True,
        # 低版本Flask请将download_name替换为attachment_filename
        download_name='text_package.zip'
    )

场景2:打包本地已有Zip文件到内存输出

import os
from flask import send_file
import io
import zipfile
import time

@app.route('/downloads/', methods=['GET'])
def download():
    FILEPATH = r"C:\Users\JD\Downloads\trydownload.zip"
    fileobj = io.BytesIO()
    with zipfile.ZipFile(fileobj, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        zip_info = zipfile.ZipInfo(os.path.basename(FILEPATH))
        zip_info.date_time = time.localtime(time.time())[:6]
        with open(FILEPATH, 'rb') as fd:
            zip_file.writestr(zip_info, fd.read())
    fileobj.seek(0)

    return send_file(
        fileobj,
        mimetype='application/zip',
        as_attachment=True,
        download_name='%s' % os.path.basename(FILEPATH)
    )

内容的提问来源于stack exchange,提问作者Josh.h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 13:15:01