主な機能は以下のとおりです。
- クリックするとFileプロパティにセットされたファイルをダウンロードする
- FileプロパティはClickイベントやDownloadingイベントでセットすることもできる
- Downloadedイベントで動的に作成したファイルを削除することもできる
使用するには、以下の手順に従います。
- FileDownloadButtonをプロジェクトに追加する
- FileDownloadButtonをツールボックスへ追加する
参考: 方法 : Visual Studio でカスタム ASP.NET サーバー コントロールを使用するの「カスタム コントロールをツールボックスに追加するには」 - *.aspxへFileDownloadButtonを配置し、イベントハンドラを設定する
例:<cc1:FileDownloadButton ID="FileDownloadButton1" runat="server" Text="Download" OnDownloading="FileDownloadButton1_Downloading" OnDownloaded="FileDownloadButton1_Downloaded"/>
- *.csでイベントハンドラを実装する
例:protected void FileDownloadButton1_Downloading(object sender, EventArgs e) { // Tempファイルを作成する var path = Path.GetTempFileName(); var file = new FileInfo(path); // Tempファイルへデータを出力する using (var s = file.OpenWrite()) using (var w = new StreamWriter(s)) { w.WriteLine("Hello"); w.Flush(); } // FileDownloadButtonのFileプロパティへTempファイルをセットする FileDownloadButton1.File = file; } protected void FileDownloadButton1_Downloaded(object sender, EventArgs e) { // Tempファイルを削除する FileDownloadButton1.File.Delete(); }
Content-Typeの設定やレスポンスの呼び出しなど、低レベルな処理をカプセル化できるので、導入のメリットはそこそこあると思います。よろしければご利用ください。
以下、FileDownloadButtonのソースです。