python - 如何让 flask 发送文件然后重定向?

标签 python pdf flask

我想让我的 Flask 应用程序发送一个文件,然后重定向到主页。

def create_pdf(**kwargs):
    page = PdfManager(**kwargs)
    pdf_out = page.create_pdf()
    response = make_response(pdf_out)
    # redirect(url_for('home'))
    response.headers['Content-Disposition'] = "attachment; filename=pdf-test.pdf"
    response.mimetype = 'application/pdf'
    return response

app.route('/', methods=['GET', 'POST'])
def home():
    create_pdf(foo='bar')

这段代码在响应时正确地吐出了 pdf 文件,但我无法在下载 pdf 文件后使页面刷新或重定向。我不能使用 Flask 的 send_from_directory 方法,因为这个 pdf 文件是使用 StringIoPdfFileWriter 对象动态生成的。

最佳答案

您可以使用 javascript 使“/”路径返回 html 响应:

<!DOCTYPE html>
<html lang="en">
<head>
    <script>
        setTimeout(function(){
            document.location = "/redirect-uri";
        }, 500)
    </script>
</head>
<body>
    <iframe width="0" height="0" src="/path-to-pdf.pdf"/>
</body>
</html>

如果 pdf 是动态生成的,您还应该像这样提供 pdf url

@route('/path-to-pdf.pdf')
def pdf_generator():
    return create_pdf()

关于python - 如何让 flask 发送文件然后重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41518040/

相关文章:

python - 如何处理与 argparse 相关的命令行参数?

python - Django:需要勾选复选框以提交表单

windows - Windows 中的 PDF 到 TIFF 免费库?

NGINX 成功提供静态资源,但它们没有在浏览器中渲染?

python - flask 蓝图 404

python - 哪个 python 包为 statsmodels 实现 _representation 和 _kalman_filter?

python - 使用值对字典进行切片

java - 添加页脚所有页面文档

java - 在 Java 桌面应用程序中打开 PDF

python - 使用 Flask 的 URL 结构和表单帖子