我有一个表单,用户可以从中添加一个房产列表。除了用户必须输入的数据之外,用户还可以上传一些图像。我使用HTML5多重属性来允许用户一次上传多个文件。上传多个文件 - MVC ..有一个总文件大小限制?
由于某种原因,当我上传一张图片时,我总是会触发HttpPost添加方法。但是,当我尝试上传多个图像时,该方法不会触发。直到现在我没有得到任何错误,所以我不知道我的实现有什么问题。
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>