2010-09-28 97 views
1

我的目标是重定向或刷新我的网页,而downloding 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

我想你的意思是说他**不能做到这一点** 。而且,即使OP写入了两个标题并刷新了响应流,他也无法达到他想要的效果。 – 2010-09-28 09:12:59

0

这是不可能的,因为浏览器定义的行为必然是模糊的。换句话说,当浏览器记录两个头部的存在时,每个头部可能有冲突的要求,那么行为可能是简单地忽略一个头部,而不是遵守这两个头部 - 这由浏览器供应商来定义。

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

在附加说明中,位置标题只对HTTP 302响应有意义(我相信在应用程序中这不是这种情况,而不是它可能有所帮助)。

0

你可以使用一些JavaScript作业

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

-1

这是一种选择,而不是在头部分强硬

private void DownloadFile() 

{ 

//Download file here... 

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

}