igUpload コントロールを利用することで、素早くファイルアップロード機能を実装することができます。今回は、.NET 5 で ASP.NET Core MVC と組み合わせて、igUpload の利用方法を紹介します。
1. Ignite UI for jQuery ファイルの読み込み
igUpload コントロールを表示するページで、Ignite UI for jQuery の JS / CSS ファイルを読み込みます。Index.cshtml にて下記の実装を行います。
@section Styles { <link href="https://cdn-na.infragistics.com/igniteui/2020.2/latest/css/themes/infragistics/infragistics.theme.css" rel="stylesheet"> <link href="https://cdn-na.infragistics.com/igniteui/2020.2/latest/css/structure/infragistics.css" rel="stylesheet"> } @section Scripts { <script src="https://code.jquery.com/ui/1.10.3/jquery-ui.min.js"></script> <script src="https://cdn-na.infragistics.com/igniteui/2020.2/latest/js/i18n/infragistics-ja.js"></script> <script src="https://cdn-na.infragistics.com/igniteui/2020.2/latest/js/infragistics.core.js"></script> <script src="https://cdn-na.infragistics.com/igniteui/2020.2/latest/js/infragistics.lob.js"></script> <script> $(function () { ... }); </script> }
2. igUpload コントロールの初期化
igUpload コントロールの初期化を行います。Index.cshtml にて下記の実装を行います。
<div id="igUpload1"></div> @section Styles { ... } @section Scripts { ... <script> $(function () { $("#igUpload1").igUpload({ mode: 'single', autostartupload: true, progressUrl: "/IGUploadStatusHandler.ashx", controlId: "serverID1" }); }); </script> }
3. igUpload ミドルウェアの登録
Startup.cs にて、igUpload のミドルウェアを登録します。
public class Startup { ... // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { ... //igUpload ミドルウェアの登録 app.UseUploadHandlerMiddleware(); app.UseUploadModuleMiddleware(); } }
4. ファイルを保存するフォルダの指定
Startup.cs の Configureservices メソッドで、ファイルのアップロード先(フォルダ)とファイルの最大サイズを指定します。
public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); // ファイルのアップロード先の指定、及び、ファイルの最大サイズの指定 services.Configure<UploadAppSettings>(options => { options.FileUploadPath = "~/wwwroot/FileUploads"; options.maxFileSizeLimit = "100000000"; }); } ... }
5. ファイルアップロード時にサーバー側で発生するイベントの捕捉
Startup.cs のコンストラクタで、ファイルアップロード時に発生するイベントを HomeController 内で実装されているイベントハンドラーと紐づけます。
public class Startup { public Startup(IConfiguration configuration) { ... // ファイルアップロード時に発生するイベントの、イベントハンドラーを登録 UploadProgressManager.Instance.AddStartingUploadEventHandler("serverID1", HomeController.HandlerUploadStarting); UploadProgressManager.Instance.AddFinishingUploadEventHandler("serverID1", HomeController.HandlerUploadFinishing); } ... }
これで、HomeController でファイルアップロード時のイベントを捕捉することができるようになります。
public class HomeController : Controller { ... internal static void HandlerUploadStarting(object sender, UploadStartingEventArgs args) { } internal static void HandlerUploadFinishing(object sender, UploadFinishingEventArgs args) { } }