4

ユーザーが物件リストを追加できるフォームがあります。ユーザーが入力しなければならないデータとは別に、ユーザーは多数の画像をアップロードすることもできます。HTML5 の multiple 属性を使用して、ユーザーが一度に複数のファイルをアップロードできるようにしています。

何らかの理由で、1 つの画像をアップロードすると、常に HttpPost Add メソッドが起動します。ただし、複数の画像をアップロードしようとすると、メソッドが起動しません。今までエラーが発生していないので、実装の何が問題なのかわかりません。

HTML

@using (Html.BeginForm("AddProperty", "User", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <legend>Property</legend>

        <div class="editor-label">
            Title
        </div>
        <div class="editor-field">
            <input type="text" name="title" />
        </div>

        <div class="editor-label">
            Description
        </div>
        <div class="editor-field">
            <input type="text" name="desc" />
        </div>

        @* ... more input fields... *@

        <div class="editor-label">
            Images
        </div>
        <div class="editor-field">
            <input type="file" multiple="multiple" name="file" />
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

コントローラ

[HttpPost]
public ActionResult AddProperty(FormCollection form, IEnumerable<HttpPostedFileBase> file)
{
    Property p = new Property();
    p.Title = form["title"];
    p.Description = form["desc"];

    // ... setting Property fields

    new PropertiesBL().AddProperty(p);

    for (int i = 0; i < file.Count(); i++)
    {
        // ... loop and save uploaded file(s)
    }
}

どんな助けでも大歓迎です。

編集 - さらなるテスト

ファイルのアップロードをテストするために、ファイル アップローダーを含むフォームだけで新しいビューを作成しました。さまざまな種類のファイルをアップロードしようとしました。私が注目したのは、たとえば 10 個のドキュメントをアップロードすると、Upload メソッドが起動したことです。しかし、3 つの (大きい) 画像をアップロードしようとすると、起動しませんでした。アップロードされる総バイト数に関して何らかの制限があると考えています...これが理にかなっているのかどうかはわかりません。

簡単なテスト

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" multiple="multiple" name="images" />
    <input type="submit" value="Upload" />
</form>

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> images)
{
    return RedirectToAction("Index");
}

また、複数のファイルを個別にアップロードしようとしました。3 つの大きな画像 (各画像は約 2 MB) をアップロードしようとすると、メソッドが起動しませんでした。これは、ある種の合計最大ファイル サイズに関連する問題であるとほぼ確信しています。

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" name="image_1" />
    <input type="file" name="image_2" />
    <input type="file" name="image_3" />
    <input type="submit" value="Upload" />
</form>
4

1 に答える 1