【问题标题】:Is it possible to send an html file with a downloadable file in one response?是否可以在一个响应中发送带有可下载文件的 html 文件?
【发布时间】:2010-08-30 13:28:09
【问题描述】:

基本上,我使用 iframe 来下载文件。我将 iframe 的源设置为我要下载的文件。那个问题不在于我无法获得下载对话框。问题是开始下载后无法关闭窗口。

我的想法是我可以发回一个带有此标头的文件。

"Content-Disposition","attachment;filename=test.txt"

然后我想发回另一个 HTML 供浏览器显示。第二个文件的重点是关闭浏览窗口。

顺便说一句:远离弹出窗口为时已晚。

【问题讨论】:

    标签: javascript html jsp download attachment


    【解决方案1】:

    不,您不能在同一响应中同时发送文件和页面。

    如果你想要两个响应,你必须发送两个请求。

    或者,您可以开始下载,然后在下载开始后使用超时关闭窗口:

    window.location.href = 'test.txt';
    window.setTimeout(function(){
      window.close();
    }, 100);
    

    【讨论】:

    • 我需要发送两个文件,一个用于下载,一个用于显示。我认为响应可以做到这一点,因为有时浏览器会同时下载图片等等。我对多部分响应了解不多。
    • 有些文件的超时时间是可以的,但是如果文件很大,需要几分钟才能下载怎么办?有没有办法解决这个问题?
    • @Grae:即使您关闭窗口,下载也应该继续。当您设置href 时,它直到您从脚本返回后才会生效,因此存在超时,以便href 可以在您关闭窗口之前生效。
    【解决方案2】:

    第二个文件的重点是关闭浏览窗口。

    你不需要这个。只需在带有待下载文件的响应中设置该标题就足以获得 Save As 对话框。您无需在新/空白窗口中打开链接。只需让链接/表单指向所需的 URL,它就会打开 Save As 对话框。当前打开的页面将保持不变。

    【讨论】:

    • 我还需要在文件下载后关闭窗口。基本上,我可以使用 window.close,但我不知道何时调用它。我需要等待回复。这就是为什么我希望我可以立即发送回文件。一个用于下载,一个包含 JavaScrip 以关闭窗口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多