【问题标题】:Redirection or Refresh Page After Zip DownloadZip 下载后重定向或刷新页面
【发布时间】: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) stackoverflow.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”页面。知道这是可能的,我会看看我是否能想出一个解决方案。

标签: java javascript servlets


【解决方案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>
    

    祝福!

    【讨论】:

      猜你喜欢
      • 2019-09-28
      • 1970-01-01
      • 2020-12-31
      • 2016-10-28
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多