如何从 stream/rendered 字典中压缩 html 文件?
How to zip an html file from a stream/rendered dictionary?
我无法通过烧瓶 send_file 下载 html 文件。
基本上,单独下载一个html文件就可以了。通过将流作为参数提供给 send_file 函数
不过;我需要将此文件与其他不相关的文件一起放入一个 zip 文件中。在 write 函数中,流和字符串 (result_html) 都不起作用。我需要以某种方式将它直接转换为 html 文件并放入 zip 文件
我暂时不知道该怎么做。我将数据(输出)作为字典...
谢谢指点
from flask import render_template, send_file
from io import BytesIO
result_html = render_template('myResult.html', **output)
result_stream = BytesIO(str(result_html).encode())
with ZipFile("zipped_result.zip", "w") as zf:
zf.write(result_html)
# zf.write(other_files)
send_file(zf, as_attachment=True, attachment_filename="myfile.zip")
如果我没理解错的话,将zip文件写入流中并将渲染结果作为字符串添加到zip文件中就足够了。然后可以通过 send_file.
传输流
from flask import render_template, send_file
from io import BytesIO
from zipfile import ZipFile
# ...
@app.route('/download')
def download():
output = { 'name': 'Unknown' }
result_html = render_template('result.html', **output)
stream = BytesIO()
with ZipFile(stream, 'w') as zf:
zf.writestr('result.html', result_html)
# ...
stream.seek(0)
return send_file(stream, as_attachment=True, attachment_filename='archive.zip')
我无法通过烧瓶 send_file 下载 html 文件。
基本上,单独下载一个html文件就可以了。通过将流作为参数提供给 send_file 函数
不过;我需要将此文件与其他不相关的文件一起放入一个 zip 文件中。在 write 函数中,流和字符串 (result_html) 都不起作用。我需要以某种方式将它直接转换为 html 文件并放入 zip 文件
我暂时不知道该怎么做。我将数据(输出)作为字典...
谢谢指点
from flask import render_template, send_file
from io import BytesIO
result_html = render_template('myResult.html', **output)
result_stream = BytesIO(str(result_html).encode())
with ZipFile("zipped_result.zip", "w") as zf:
zf.write(result_html)
# zf.write(other_files)
send_file(zf, as_attachment=True, attachment_filename="myfile.zip")
如果我没理解错的话,将zip文件写入流中并将渲染结果作为字符串添加到zip文件中就足够了。然后可以通过 send_file.
传输流from flask import render_template, send_file
from io import BytesIO
from zipfile import ZipFile
# ...
@app.route('/download')
def download():
output = { 'name': 'Unknown' }
result_html = render_template('result.html', **output)
stream = BytesIO()
with ZipFile(stream, 'w') as zf:
zf.writestr('result.html', result_html)
# ...
stream.seek(0)
return send_file(stream, as_attachment=True, attachment_filename='archive.zip')