2009-06-17 54 views
6

我正在使用C#和ASP.NET 2.5。使用C#編寫「即時」到客戶端的文件

我想要一個簡單的方法來生成一個「文件」即時(假設這個例子是一個csv文件),並將其傳輸到客戶端,而不必實際寫入服務器文件系統。

+0

總注:我是否堅果,或者是最新版本的ASP.NET 2.0? .NET是高達3.5 SP1,但我認爲ASP.NET是2.0 – 2009-06-19 17:30:10

回答

10

經過一番搜索和試驗和錯誤,我開發了以下內容。它似乎完全符合法案。它應該很容易適應PHP或任何其他服務器端軟件,因爲它主要涉及修改頭文件。

protected void streamToResponse() 
{ 
    Response.Clear(); 
    Response.AddHeader("content-disposition", "attachment; filename=testfile.csv"); 
    Response.AddHeader("content-type", "text/csv"); 

    using(StreamWriter writer = new StreamWriter(Response.OutputStream)) 
    { 
     writer.WriteLine("col1,col2,col3"); 
     writer.WriteLine("1,2,3"); 
    } 
    Response.End(); 
} 
+0

是的,這是一個很好的方法;然而,這段代碼應該駐留在一個ashx文件中。在稱爲「Generic Handler」的visual studio中,這減少了加載aspx頁面的開銷。 – Nate 2009-06-17 18:37:35

2

我還建議,如果你有文本以外的東西,比方說,二進制,使用Response.WriteBinary()方法

我經常創建一個JPG,使用Bitmap.Save()方法將其寫入MemoryStream,使用.ToArray()將MemoryStream轉換爲byte []數組,然後使用Response.WriteBinary() 。