ASP.NET+VB.NET 複数件のファイルをアップロードする

ASP.NET+VB.NETの複数件のファイルをアップロードするサンプルです。
htmlのアップロードボタンを使用します。

確認環境
・Microsoft Visual Studio Community 2019

目次

フォーム

フォームの部分のコードです。

Public Property UploadFileName As IList(Of HttpPostedFileBase)

アップロードするファイルに対して使用します。
HttpPostedFileBaseクラスの型のリストにします。
クラスは、test1Actionformという名称です。

以下は、MicrosoftのHttpPostedFileBaseクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.web.httppostedfilebase?view=netframework-4.8

ビュー

ビューのhtmlの部分です。

@Using Html.BeginForm("index", "test1/ajaxFileUp", FormMethod.Post, New With {.id = "form1", .enctype = "multipart/form-data"})

      @<input name="UploadFileName" type="file" value="" />

      @<input name="UploadFileName" type="file" value="" />

      @<input type="button" id="button1" value="ボタン" />
End Using

1行目のenctype は、multipart/form-dataにします。
3,5行目のようにnameは同じ名称でOKです。フォームのプロパティの名称と同じにします。

ビューのjQueryのAjaxの部分です。

function uploadFile() {
    var form = $('#form1').get(0);
    const formData = new FormData(form);
    $.ajax({
        url: "./ajaxFileUp", // 通信先のURL
        type: "POST",		// 使用するHTTPメソッド
        data: formData, // 送信するデータ
        dataType: "json", // 応答のデータの種類
        contentType: false,
        processData: false,

3行目のようにFormDataを使用します。
11,12行目のcontentTypeとprocessDataはfalseにします。

コントローラ

コントローラの部分です。

Function ajaxFileUp(taform1 As test1Actionform) As ActionResult

     Dim hpbase As HttpPostedFileBase

     For Each hpbase In taform1.UploadFileName
           hpbase.SaveAs("D:\\Test3\\" + hpbase.FileName)
     Next

     Return View("ajaxCreate", taform1)
End Function

5行目は、For Each文で取得したファイル分処理を繰り返します。
6行目は、SaveAsメソッドでファイルを保存しています。

関連の記事

VB.NETとPLSQLのREF CURSORでselectする
VB.NETとPLSQLで複数件をinsertする

△上に戻る