我在flask中使用send_from_directory,允许用户下载某个文件。我想要实现的是在下载文件后页面刷新,但我不确定如何用烧瓶实现这一点(如果可能的话)。目前我的代码如下所示:
if report:
location = Document_Generator(report).file_location
return send_from_directory(location[0],
location[1], as_attachment=True)
所以我的问题是:如何刷新页面(使用模板返回正常响应)以及允许用户下载文件?
答案 0 :(得分: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(); };
}