shuhelohelo’s blog

Xamarin.Forms多めです.

ASP.NET Coreでファイルをアップロードする

ViewModelにIFormFile型のプロパティを用意する。

using Microsoft.AspNetCore.Http;

namespace MyApp.ViewModels.UploadFile
{
    public class UploadFileViewModel
    {
        public IFormFile SelectedFile { get; set; }
    }
}

View側でアップロードするファイルを選択するFormを用意する。

<form method="post" asp-action="upload" enctype="multipart/form-data">
    <div class="form-group row">
        <div class="col-8">
            <div class="custom-file">
                <input asp-for="SelectedFile" class="form-control custom-file-input" />
                <label class="custom-file-label">成績ファイルを選択してください</label>
            </div>
        </div>
    </div>
    <div class="form-group row">
        <div class="col-8">
            <button class="btn float-right">読み込み</button>
        </div>
    </div>
</form>

ControllerにActionメソッドを用意する。

        [HttpPost]
        public IActionResult Upload(UploadFileViewModel model)
        {
            //ここでなにかする

            return View();
        }

これでUploadアクションメソッドのパラメータのmodelにPostされたデータ(ファイル)が渡されるので、これをFileStreamでサーバー上に保存したりなんかしたり。

動作確認していないので上のコードが動くかわからない。けれど、こういう感じ。