2010-08-08 103 views
0

我使用以下代碼來編寫一個字符串(轉換爲一個字節數組)的內容到客戶端在ASP.NET/C#保存字符串與打開客戶端/保存對話框

byte[] data = StrToByteArray(strData); 
Response.ClearContent(); 
Response.AppendHeader("content-length", data.Length.ToString()); 
Response.ContentType = "text/plain"; 
Response.AppendHeader("content-Disposition", "attachment;filename=" + fileName); 
Response.BinaryWrite(data); 
Response.Flush(); 

文件名是以文件擴展名(.pgn)結尾的文件的名稱。但是,該文件保存爲.txt文件,而忽略了我提供的擴展名。這是否與Response.Contenttype =「text/plain」有關?我怎樣才能打開/保存對話框來顯示並保存正確的(.pgn)文件名?另外,如果文件名是由短劃線或空格分隔的字符串,當打開/保存對話框出現時,文件名不會完整顯示,但會被截斷,第一個破折號( - )或空格(或逗號)遇到。這怎麼解決?

回答

0
  1. 是的,由於您的內容類型(MIME類型),它保存了.txt。使用image/png。

  2. 如何刪除破折號和空格? String.Replace很棒。 fileName.Replace(「 - 」,「」);等等

+0

嗨,謝謝,我已經使用了替換,但文件確實是一個文本文件,但與「pGn」擴展名(不是PNG)。在IE中它是正確保存的,但在Firefox中它將它保存爲.png.txt – Tim 2010-08-08 18:52:11

+0

我最終解決了它。如果我想使用不同的擴展名,我不得不使用「application/octet-stream」作爲ContentType。 – Tim 2010-08-08 19:37:10