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); 

}