我正在使用C#和ASP.NET 2.5。使用C#編寫「即時」到客戶端的文件
我想要一個簡單的方法來生成一個「文件」即時(假設這個例子是一個csv文件),並將其傳輸到客戶端,而不必實際寫入服務器文件系統。
我正在使用C#和ASP.NET 2.5。使用C#編寫「即時」到客戶端的文件
我想要一個簡單的方法來生成一個「文件」即時(假設這個例子是一個csv文件),並將其傳輸到客戶端,而不必實際寫入服務器文件系統。
經過一番搜索和試驗和錯誤,我開發了以下內容。它似乎完全符合法案。它應該很容易適應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();
}
是的,這是一個很好的方法;然而,這段代碼應該駐留在一個ashx文件中。在稱爲「Generic Handler」的visual studio中,這減少了加載aspx頁面的開銷。 – Nate 2009-06-17 18:37:35
使用的MemoryStream類:
http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx
我還建議,如果你有文本以外的東西,比方說,二進制,使用Response.WriteBinary()方法
我經常創建一個JPG,使用Bitmap.Save()方法將其寫入MemoryStream,使用.ToArray()將MemoryStream轉換爲byte []數組,然後使用Response.WriteBinary() 。
總注:我是否堅果,或者是最新版本的ASP.NET 2.0? .NET是高達3.5 SP1,但我認爲ASP.NET是2.0 – 2009-06-19 17:30:10