ASP.NET MVC でファイルをアップロードするコードを紹介します。
空のASP.NET MVCプロジェクトを作成します。
コントローラー・ビューの追加
コントローラーの追加
Controllerを追加します。ソリューションエクスプローラでControllerディレクトリを選択し、右クリックします。ポップアップメニューを表示されますので、メニューの[追加]を選択し、サブメニューの[コントローラー]を選択します。
[スキャフォ-ルディングを追加]ダイアログが表示されます。一覧から[MVC5 コントローラー]を選択し、ダイアログ下部の[適用]ボタンをクリックします。
[コントローラーの追加]ダイアログが表示されます。コントローラー名を"DefaultController"とします。
ビューの追加
コントローラーが作成できると、Viewsディレクトリ内に、先ほど作成した"Default"ディレクトリが作成されます。このディレクトリを選択し右クリックします。ポップアップメニューの[追加]メニューの[ビュー]をクリックします。
[ビューの追加]ダイアログが表示されます。
ビュー名を"Index"にします。
同様の処理を繰り返し、"Index"と"Upload"の2つのビューを作成します。
コード
下記のコードを記述します。
Index.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@using (Html.BeginForm("Upload", "Default", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="uploadFile" />
<input type="submit" value="アップロード" />
}
</div>
</body>
</html>
Upload.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Upload</title>
</head>
<body>
<div>
アップロードしました。
</div>
</body>
</html>
DefaultController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.IO;
namespace FileUploader.Controllers
{
public class DefaultController : Controller
{
// GET: Default
[HttpGet]
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Upload(HttpPostedFileWrapper uploadFile)
{
if (uploadFile != null)
{
uploadFile.SaveAs(@"c:\upload-file\" + Path.GetFileName(uploadFile.FileName));
}
return View();
}
}
}
解説
Uploadメソッドの引数に、"HttpPostedFileWrapper uploadFile"を追加することで、アップロードしたファイルの情報にアクセスできます。
public ActionResult Upload(HttpPostedFileWrapper uploadFile)
uploadFileがnullでなければ、ファイルがアップロードされたことになります。SaveAsメソッドを利用して、アップロードされたファイルを保存できます。
if (uploadFile != null)
{
uploadFile.SaveAs(@"c:\upload-file\" + Path.GetFileName(uploadFile.FileName));
}
実行結果
プロジェクトを実行します。Webブラウザが起動し、下図のページが表示されます。
[参照]ボタンをクリックします。アップロードするファイルの選択ダイアログが表示されます。
ファイルを選択します。選択後[アップロード]ボタンをクリックします。
ページが切り替わり、ファイルのアップロードが完了した旨のメッセージが表示されます。
"c:\upload-file\"ディレクトリを確認すると、ファイルがアップロードされていることが確認できました。
ASP.NET MVCでファイルのアップロードを実装できました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-07-28
作成日: 2015-07-27