我的目标是在下载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。
是否可以在标题部分执行此操作?如果是,请说明如何。
感谢。
答案 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);
}