Javascript 是否可以在一个响应中发送包含可下载文件的html文件?
基本上,我使用iframe下载文件。我将iframe的源设置为要下载的文件。问题不在于我无法获得下载对话框。问题是下载开始后我无法关闭窗口 我想的是我可以用这个头发回一个文件Javascript 是否可以在一个响应中发送包含可下载文件的html文件?,javascript,html,jsp,download,attachment,Javascript,Html,Jsp,Download,Attachment,基本上,我使用iframe下载文件。我将iframe的源设置为要下载的文件。问题不在于我无法获得下载对话框。问题是下载开始后我无法关闭窗口 我想的是我可以用这个头发回一个文件 "Content-Disposition","attachment;filename=test.txt" 然后我想发回另一个HTML供浏览器显示。第二个文件的要点是关闭浏览窗口 顺便说一句:现在离开弹出窗口已经太晚了 第二个文件的要点是关闭浏览窗口 你不需要这个。只需在响应上设置要下载的文件的头就足以获得另存为对话框。您
"Content-Disposition","attachment;filename=test.txt"
然后我想发回另一个HTML供浏览器显示。第二个文件的要点是关闭浏览窗口
顺便说一句:现在离开弹出窗口已经太晚了
第二个文件的要点是关闭浏览窗口
你不需要这个。只需在响应上设置要下载的文件的头就足以获得另存为对话框。您不需要在新/空白窗口中打开链接。只要让链接/表单指向所需的URL,它就会打开“另存为”对话框。当前打开的页面将保持不变。不,不能在同一响应中同时发送文件和页面 如果需要两个响应,则必须发送两个请求 或者,您可以启动下载,然后在下载开始后使用超时关闭窗口:
window.location.href = 'test.txt';
window.setTimeout(function(){
window.close();
}, 100);
下载完文件后,我还需要关闭窗口。基本上,我可以用window.close,但我不知道什么时候叫它。我需要等待答复。这就是为什么我希望我能立即发送回文件。一个用于下载,另一个带有JavaScrip以关闭窗口。我需要发送两个文件,一个用于下载,一个用于显示。我认为响应可以做到这一点,因为有时候浏览器会同时下载图片等等。我对多部分响应不太了解。对于某些文件,超时是可以的,但是如果文件太大,下载需要几分钟怎么办?有办法吗?@Grae:即使你关闭窗口,下载也应该继续。当您设置
href
时,只有从脚本返回后才会生效,因此存在超时,以便href
可以在关闭窗口之前生效。