1

我在烧瓶中使用 send_from_directory ,这将允许用户下载某个文件。我想要实现的是文件下载后页面刷新,但我不确定如何使用烧瓶实现这一点(如果可能的话)。目前我的代码如下所示:

if report:
            location = Document_Generator(report).file_location

            return send_from_directory(location[0],
                               location[1], as_attachment=True)

所以我的问题是:如何刷新页面(返回带有模板的正常响应)以及允许用户下载文件?

4

1 回答 1

1

HTTP 不允许你做你想做的事(200 + 300)。您可以在客户端级别执行此操作,但使用_target+ JavaScript(或仅 JavaScript)。

<a href="/path/to/download/file" target="downloadIframe">Download file</a>
<iframe id="downloadIframe"></iframe>

结合一些 JavaScript:

var slice = Array.prototype.slice;

var links = document.querySelectorAll("[target='downloadIframe']"),
    iframe = document.getElementById("downloadIframe");
slice.call(links).forEach(function(link) {
    link.addEventListener("click", reloadPageOnIframeLoad);
});

function reloadPageOnIframeLoad() {
    // Reset this for each click on a download link
    // rather than adding another event listener each time.
    iframe.onload = function() { window.location.reload(); };
}
于 2013-05-31T14:14:02.763 回答