ユーザーが物件リストを追加できるフォームがあります。ユーザーが入力しなければならないデータとは別に、ユーザーは多数の画像をアップロードすることもできます。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>