python - flask send_file 不适用于 tar.gz 文件

标签 python flask tar gzip sendfile

我有一个具有结构的 my_folder.tar.gz 存档

my_folder.tar.gz:
    my_folder/
        file1
        file2

我构建了一个基本的 flask 端点,比如:

@blueprint.route('/download')
def download():
    return send_file('/path/to/my_folder.tar.gz',
                     as_attachment=True,
                     attachment_filename='my_name.tar.gz')

当我第一次运行它时,一切运行顺利,浏览器下载了正确的存档。问题是当我第二次运行它时,在存档中有一个文件 my-name.tar-1 而不是我希望发送的文件夹。我再试一次,文件名 my-name.tar-2 等等。

事实证明,当我将 attachment_filename 参数更改为新值时,下载会再次运行,但也只会运行一次。 send_from_directory() 函数也会出现同样的情况。

这是一个非常奇怪的行为。有人知道会发生什么吗?

最佳答案

你必须使用,

return send_file('/path/to/my_folder.tar.gz',as_attachment=True, attachment_filename='my_name.tar.gz, cache_timeout=0')

关于python - flask send_file 不适用于 tar.gz 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064166/

相关文章:

linux - 更新压缩的 tar 中的单个文件

python - Django - 当用户提交表单时,会创建表,但表之间的连接不是

python - 在Python中合并时间序列数据帧

Python模拟补丁实例方法和检查调用参数

python - 每当 mysql 服务重新启动时,uwsgi 如何重新建立与远程 mysql 数据库的连接

python - 如何处理 Python Flask 重定向

python - 为 Python 安装 VTK

python - Discord.py 如何获取最后一条消息并在没有任何前缀/命令的情况下回复它

python - flask 中的中间件

pyspark - 在数据 block 上提取 tar.gz