C# .Net Core でファイルをWebからダウンロードする方法
はじめに
今回はファイルをダウンロードする方法についてまとめます。
file.zip というファイルをダウンロード出来るようにしました。
開発環境
・Windows10 Pro
・VisualStudio2019
Visual Studio のインストール | Microsoft Docs
動作
画面上のダウンロードボタンを左クリックします。
ファイルがダウンロードできます。
ダウンロードしたファイルは、ダウンロードフォルダに保存されます。
1. ASP.Net Core MVC アプリケーションを作成する
ASP.NET Core Webアプリケーションを選択して、次へ。
Web アプリケーション(モデル ビュー コントローラー)を選択して、作成。
2. フォルダの作成とファイルの追加
Downloadフォルダをプロジェクトの下に作成します。
Downloadフォルダに file.zip のファイルを作成します。
3. ボタンの追加
Index.cshtml にダウンロードボタンを追加します。
<button class="btnDownload" type="button">ダウンロード</button>
4. ボタン押下時のアクションを追加 1/2
HomeController.cs に Download メソッドを追加します。
[Route("Download")] public ActionResult Download() { var filePath = Path.Combine(Directory.GetCurrentDirectory(), "Download", "file.zip"); var file = System.IO.File.ReadAllBytes(filePath); return File(file, MediaTypeNames.Application.Zip, "file.zip"); }
5. ボタン押下時のアクションを追加 2/2
js フォルダに download.js ファイルを作成します。
download.js にボタン押下時 Download メソッドを呼び出す処理を追加します。
注意点として、変数 mySiteUrl のポート番号が実行した時のポート番号と違う場合には変更してください。
$('.btnDownload').click(function () { var documentUrl = document.URL; var baseUrl = documentUrl.substring(0, documentUrl.indexOf('currentPageName')); var mySiteUrl = 'https://localhost:44369/' location.href = mySiteUrl + '/Download' });
6. jsファイルを読み込む一文を追加
_Layout.cshtml に download.js を読み込む一文を追加します。
これがないとダウンロード時に Uncaught ReferenceError: $ is not defined とエラーになります。
<script src="~/js/download.js"></script>
7. 動作確認
ファイルのダウンロードが出来ることを確認して終了です。