【发布时间】:2014-10-05 19:56:56
【问题描述】:
我正在尝试发送下载,然后转发到页面。但是一旦下载完成,转发就不会发生。
【问题讨论】:
-
你能给我们看看代码吗?
-
@sᴜʀᴇsʜᴀᴛᴛᴀ 代码没有问题。
-
你是如何发送下载的。你在用
Content-Disposition" : "attachment; filename=...");吗?
我正在尝试发送下载,然后转发到页面。但是一旦下载完成,转发就不会发生。
【问题讨论】:
Content-Disposition" : "attachment; filename=...");吗?
这是正常行为。文件下载会将文件内容写入响应并关闭响应流,转发将尝试在已关闭的响应上写入新内容,导致响应中没有写入任何新内容。
解决方案:
在您的客户端中,使用 JavaScript 触发文件下载,同时触发对您要转发的页面的请求。
客户端代码改编自这里:Download a file and redirect...or alternative
<script>
function thanks() {
setTimeout(function () {
document.location.pathname = "another.jsp";
}, 1000);
}
</script>
<a href="${request.contextPath}/yourServlet?file=foo.dat" onclick="thanks()">Download now!</a>
【讨论】: