原來我們項目在開發時中(文件是存儲在數據庫中)下載文件采用寫入http頭的形式。如下 Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(字節流);
Response.End();
但在項目部署後,用戶的IE6.0浏覽時,會被攔截,並關閉退出。當時同事用了彈出一個窗體,再在彈出的窗體中再“點擊下載”,這樣就不會被攔截。
我試了一個更直接的解決方法,就是點擊時,先生成臨時文件,再鏈接至臨時文件,即彈出文件下載或打開對話框。代碼很簡單:
string fileName = "文件名" //用文件id
string tempFilePath = Request.PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\\"));
tempFilePath += "\\temp\\" + fileName;
FileStream file = new FileStream(tempFilePath,FileMode.OpenOrCreate,FileAccess.ReadWrite);
try
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"]; //轉換
file.Write(docBody, 0, docBody.Length);
file.Close();
Response.Redirect("temp\\" + fileName);
}
catch
{
file.Close();
}