Zip 下载后重定向或刷新页面

Posted

技术标签:

【中文标题】Zip 下载后重定向或刷新页面【英文标题】:Redirection or Refresh Page After Zip Download 【发布时间】:2014-09-06 18:32:22 【问题描述】:

当请求转到 servlet 时,我正在通过 .vm 文件中的 href 调用 servlet(因为我正在使用前端的速度框架)我正在下载一个文件。用于下载的文件生成大约需要 30 秒,因此我想通过弹出窗口指示最终用户,为此我在我的 .vm 文件中调用了相同 href 的函数,该函数正在打开一个弹出窗口,指示文件当前正在生成所以请稍等。但是当文件生成和下载完成时,我想删除该弹出窗口。我通过 servlet 上的重定向尝试了这个,但在谷歌搜索后我发现我们无法在下载后更改响应状态 (link)。

我正在像这样在我的 vm 文件中调用 javascript 函数和 servlet

 <a href="/overriderulehandler?report=1" onClick="return reportResponse()"> Generate Report </a>

overriderulehandler 正在调用我的 servlet,我正在准备文件以供下载,reportResponse 是 JS 函数,我在其中打开弹出窗口。

请建议我应该如何完成这项任务。如果有人对此有其他想法,请分享。任何帮助表示赞赏。

【问题讨论】:

这听起来是个好问题,对我来说很有趣。我试图找到一些可行的解决方案,但无法弄清楚。看起来没有更简单的方法可以实现它。检查这些链接:1) ***.com/questions/17921797/… 2) coderanch.com/t/362152/Servlets/java/Redirect-JSP-file-download 3) coderanch.com/t/579820/JSF/java/… 4) java-forums.org/new-java/32282-download-then-show-page-jsp.html 你能或正在使用 jquery 吗?可以使用它来监控资源查询的状态码,但我从未尝试使用jquery ajax 来下载资源。有了它,您可能会在成功:触发 ajax 调用的函数时设置您的 window.location.href。 卡特我厌倦了通过 ajax 下载但我没有成功。如果你有任何好的链接请与我分享。 请检查shailesh的第一个链接,说我们不能通过ajax下载资源。 好的,明白了。我自己没有尝试过@kailashgaur。我确实在apple.com上注意到,下载itunes在开始下载后直接进入“thankyou”页面。知道这是可能的,我会看看我是否能想出一个解决方案。 【参考方案1】:

这个 onClick 处理程序对我有用。

onclick="setTimeout(function()window.location.href='test.html',100)"

你可以把它放在你的锚标记中调用你的servlet,封装的匿名函数可以调用你喜欢的任何其他函数。 'test.html' 可能是一个页面,上面写着“您的文件正在准备中,很快就会下载。

servlet 上响应的内容类型应与您推送的文件类型相匹配,以便浏览器知道下载文件而不是尝试打开它。

【讨论】:

【参考方案2】:

我发现下载后重定向的方法是使用两个不同的 html/javascript/JQuery 事件处理程序。重定向处理程序是下载,甚至是 Onmousedown。因此,在鼠标按下时,js 将生成 PDF 并下载,然后在鼠标按下时重定向将执行。感谢上帝,它可以工作...实现起来也很简单。

<a href="#" target="_blank" onmousedown="javascript:createPDF(<?php echo $ID; ?>,'actionName','pageName'); return false;">Create PDF</a>

祝福!

【讨论】:

以上是关于Zip 下载后重定向或刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

提交表单后重定向到另一个页面?

使用 facebook 登录网站后重定向页面

使用react redux登录后重定向用户?

Vue路由器,刷新显示空白页面

在空闲/不活动60秒后重定向用户?

Laravel 4 Redirect :: back()不会转到上一页(刷新当前页面)