2010-10-08 72 views
7

我使用Response.AddHeader不打開文件( 「內容處置」, 「附件;文件名=」 + Server.HtmlEncode(文件名));彈出用戶的「打開/保存文件」對話框,以便他們可以將文件下載到本地機器上。Response.AddHeader( 「內容處置」)在IE6

這在IE7正常工作良好,但在IE6文件沒有在「打開/保存文件」對話框中的打開按鈕打開時,用戶點擊。我通過淨消失,發現 Response.AddHeader(「內容處置」,「內聯;文件名=」 + Server.HtmlEncode(文件名)); 應該提供工作,在IE6中,其工作正常..

但問題是,可以在瀏覽器中打開的大多數文件打開在頁面本身..即用戶在郵件頁面上,然後點擊下載圖像文件,它會打開那裏,,我需要它在另一個窗口在IE7的情況下,我能做些什麼,不能在庫巴與系統,即(的Word,Excel等)的當前應用程序中打開...打開其他文件打開..

請提出要堅持兩個IE的...我使用的代碼是在這裏同樣代碼的方法....

Response.AddHeader("Content-Disposition", "attachment; filename=" +FileName); 
Response.AddHeader("Content-Length", file.Length.ToString()); 
Response.ContentType = ReturnExtension(file.Extension.ToLower()); 
Response.TransmitFile(file.FullName); 
Response.End(); 

private string ReturnExtension(string fileExtension) 
    { 
     switch (fileExtension) 
     { 
      case ".txt": 
       return "text/plain"; 
      case ".doc": 
       return "application/ms-word"; 
      case ".xls": 
       return "application/vnd.ms-excel"; 
      case ".gif": 
       return "image/gif"; 
      case ".jpg": 
      case "jpeg": 
       return "image/jpeg"; 
      case ".bmp": 
       return "image/bmp"; 
      case ".wav": 
       return "audio/wav"; 
      case ".ppt": 
       return "application/mspowerpoint"; 
      case ".dwg": 
       return "image/vnd.dwg"; 
      default: 
       return "application/octet-stream"; 
     } 
    } 
+1

你爲什麼HTML編碼的文件名? HTTP標頭不是HTML。 – spender 2010-10-08 10:09:37

+0

YH伊茨一個錯誤,我已刪除了它,但它不解決問題.. – deepu 2010-10-08 10:18:49

+1

我有我的解決辦法從你的問題謝謝:) – bhargav 2012-02-14 13:16:07

回答

13

我發現在IE 6中,我們必須閱讀內容和使用緩衝區和二進制寫在IE 6中打開文件的問題,,下面的代碼工作正常,我在IE6

FileStream sourceFile = new FileStream(Server.MapPath(@"FileName"), FileMode.Open); 
float FileSize; 
FileSize = sourceFile.Length; 
byte[] getContent = new byte[(int)FileSize]; 
sourceFile.Read(getContent, 0, (int)sourceFile.Length); 
sourceFile.Close(); 
Response.ClearContent(); 
Response.ClearHeaders(); 
Response.Buffer = true; 
Response.ContentType = ReturnExtension(file.Extension.ToLower()); 
Response.AddHeader("Content-Length", getContent.Length.ToString()); 
Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName); 
Response.BinaryWrite(getContent); 
Response.Flush(); 
Response.End(); 
+0

.. – solairaja 2011-08-12 13:52:26

1

試試這個設置的小故事NT類型字節流:

Response.ContentType = "application/octet-stream"; 
+0

的一部分,我已經使用了....有其不開同樣的問題 – deepu 2010-10-11 10:10:39