gpt4 book ai didi

python - tar 文件并使用 Flask 应用程序下载

转载 作者:太空宇宙 更新时间:2023-11-03 16:12:11 24 4
gpt4 key购买 nike

我有一个 tex 文件和三张图像,我希望用户可以单击一个按钮并下载所有三个图像。如果这四个文件成为一个 tar 文件,那就更理想了。我现在的下载效果如下

@app.route('/download_tex', methods=['GET', 'POST'])
@login_required
def download_tex():
latext_text = render_template('get_lates.html')

filename = 'test'
response = make_response(latext_text)
response.headers["Content-Disposition"] = "attachment; filename=%s.tex" % filename

return response

这对于 tex 文件效果很好,但是如何在 Flask 应用程序中压缩文件并发送 tar 文件?

编辑:好的,感谢下面的评论,我想出了这段代码

latext_text = render_template('get_latex.html')

latex_file = open(basedir + '/app/static/statistics/latex_%s.tex' % current_user.username, "w")
latex_file.write(latext_text)
latex_file.close()

filename = 'tarfile_%s.tar.gz' % current_user.username
filepath = basedir + '/app/static/statistics/%s' % filename

tar = tarfile.open(filepath, "w:gz")
tar.add(basedir + '/app/static/statistics/image1.png')
tar.add(basedir + '/app/static/statistics/image2.png')
tar.add(basedir + '/app/static/statistics/image3.png')
tar.add(basedir + '/app/static/statistics/latex_%s.tex' % current_user.username)
tar.close()

但是我现在如何使用浏览器下载该 tar 文件?

最佳答案

您应该使用send_from_directory Flask 为此提供的方法 =) 这是您正在做的事情的完美用例。

你可以做的是这样的:

from flask import send_from_directory

# code here ...

filename = 'tarfile_%s.tar.gz' % current_user.username
filedir = basedir + '/app/static/statistics/'

# tar code here ...

return send_from_directory(filedir, filename, as_attachment=True)

这将以干净的方式为您处理所有下载位。

关于python - tar 文件并使用 Flask 应用程序下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39182405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com