3

我有一个表单,用户可以从中添加一个房产列表。除了用户必须输入的数据之外,用户还可以上传一些图像。我使用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> 

回答

1

问题出在可以上传的最大字节数上。这可以通过在web.config文件中设置maxRequestLength来更改。

参考

How to upload large files using MVC 4?

代码:

<system.web> 

    <httpRuntime targetFramework="4.5" 
     maxRequestLength="2147483647" 
     executionTimeout="1600" 
     requestLengthDiskThreshold="2147483647" /> 
    .... 

</system.web> 

为链接的问题的答案,列出了<system.web>标签下的以下但我只能在<system.webServer>添加它标签:

<system.webServer> 

    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="2147483647" /> 
     </requestFiltering> 
    </security> 
    .... 

</system.webServer> 
相关问题