2010-07-14 55 views
2

我想讓我的用戶點擊一個按鈕,說「下載」,然後將建立一個動態的csv文件,並會提示用戶下載。我知道如何使用HTTPHandler來構建文件,但不太確定通過下載來傳遞內容的機制。允許用戶下載動態csv文件asp.net

回答

0

只需在HTTP處理程序代碼中發出Content-Disposition HTTP標頭即可。大多數瀏覽器會將其解釋爲下載請求。用您希望用戶看到的文件名替換yourfile.csv

context.Response.ContentType = "text/csv"; 
context.Response.AddHeader("Content-Disposition", "attachment; filename=yourfile.csv"); 
11

我通常會創建一個通用的處理程序(ashx的),做這樣的事情:

public void ProcessRequest(HttpContext context) 
{ 
    StringBuilder myCsv = new StringBuilder(); 
    foreach(myRow r in myRows) { 
    myCsv.AppendFormat("\"{0}\",{1}", r.MyCol1, r.MyCol2); 
    } 

    context.Response.ContentType = "application/csv"; 
    context.Response.AddHeader("content-disposition", "attachment; filename=myfile.csv"); 
    context.Response.Write(myCsv.ToString()); 
} 

現在,如果你正在構建的CSV真大,你可能要寫出每行因爲你創建它,而不是將它填充到StringBuilder中。

+2

只是上面代碼的一小部分:我發現我需要添加 context.Response.Flush(); context.Response.End(); 我的代碼時,我實現了類似的東西。 – Malice 2011-04-18 13:03:23