单击并下载文件后重定向URL

时间:2010-09-28 08:58:16

标签: java html redirect header

我的目标是在下载excel文件时重定向或刷新我的页面:

详细信息:

在我的应用程序中,我发送动态生成的Excel文件

setContentType("application/vnd.ms-excel; charset=windows-1254");
setCharacterEncoding(Constants.ENCODING);
setHeader("content-disposition", "attachment;filename=" + Constants.DEFAULT_EXCEL_FILE);
setHeader("Location","http://www.google.com");

但在要求用户保存或打开Excel文件后,它没有重定向到ex:google.com。

是否可以在标题部分执行此操作?如果是,请说明如何。

感谢。

4 个答案:

答案 0 :(得分:0)

您无法重定向,因为您已刷新响应流。

答案 1 :(得分:0)

由于浏览器的定义行为必然含糊不清,因此这是不可能的。换句话说,当浏览器注意到存在两个标题时,每个标题可能存在冲突的要求,那么行为可能只是忽略一个,而不是同时服从两者 - 浏览器供应商可以自定义它。

在这种特殊情况下,Content-Disposition和Location HTTP标头是冲突的,因此如果浏览器首先处理Location标头导致重定向,则永远不会提示最终用户进行文件下载

另外需要注意的是,Location标头只对HTTP 302响应有意义(我相信在您的应用程序中不是这种情况,而不是它可能会有所帮助)。

答案 2 :(得分:0)

您可以使用一些JavaScript来完成工作

<a href="myfile.txt" onclick='window.location = 'http://www.google.com/';">
File
</a>

答案 3 :(得分:-1)

这是一个选项,而不是标题部分艰难

private void DownloadFile()

{

//Download file here...

//Refresh this page.
this.Response.Redirect(Request.Url.AbsolutePath);

}