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)
    {

    }
}
Tagged:

製品について

Ignite UI for jQuery