次のように、HTTP ハンドラー (.ashx) を使用してファイルをダウンロードできます。
ダウンロードファイル.ashx:
public class DownloadFile : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition",
"attachment; filename=" + fileName + ";");
response.TransmitFile(Server.MapPath("FileDownload.csv"));
response.Flush();
response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
次に、次のように、ボタン クリック イベント ハンドラーから HTTP ハンドラーを呼び出すことができます。
マークアップ:
<asp:Button ID="btnDownload" runat="server" Text="Download File"
OnClick="btnDownload_Click"/>
コード ビハインド:
protected void btnDownload_Click(object sender, EventArgs e)
{
Response.Redirect("PathToHttpHandler/DownloadFile.ashx");
}
パラメータを HTTP ハンドラに渡す:
Response.Redirect()
次のように、クエリ文字列変数を に単純に追加できます。
Response.Redirect("PathToHttpHandler/DownloadFile.ashx?yourVariable=yourValue");
次に、実際のハンドラー コードで、次のようにRequest
オブジェクトを使用しHttpContext
て、クエリ文字列変数の値を取得できます。
System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;
string yourVariableValue = request.QueryString["yourVariable"];
// Use the yourVariableValue here
注- ファイル名をクエリ文字列パラメーターとして渡して、実際のファイルが何であるかをユーザーに提案するのが一般的です。この場合、名前の値を [名前を付けて保存...] で上書きできます。