使用c#上传多个文件时出现问题

时间:2013-12-16 04:58:27

标签: c# file asp.net-mvc-4

我正在尝试上传多个文件,(只需点击一下即可选择多个文件并上传)。为此,我使用以下代码。我在MVC4中这样做

@using (Html.BeginForm("Gallery", "Admin", FormMethod.Post, new  {enctype="multipart/form-data", id = "GalleryForm" }))
{
    @Html.ValidationSummary();

    <div> Select the files to Upload<br /> <input type="file" name="file" id="file" multiple="multiple" /><br /><br /></div>
    <div><input type="submit" name="submit" Value="Save"/></div>
}

控制器

[HttpPost]
public ActionResult Gallery(IEnumerable<HttpPostedFileBase> files)
{
    foreach (var file in files)
    {
        if (file.ContentLength > 0)
        {
            var fileName = Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/Images/Gallery/"), fileName);
            file.SaveAs(path);
         }
    }
    return RedirectToAction("Index");
}

如果我选择了多个文件,我收到错误“超出最大请求长度”,当我选择单个文件并尝试上传时,我收到错误"Object reference not set to an instance of an object"。实际上,我想使用相同的表单上传单个和多个文件。这怎么可能呢?请帮我。提前谢谢。

2 个答案:

答案 0 :(得分:1)

重命名输入类型文件的name属性

<input type="file" name="files" id="file" multiple="multiple" />

表示第二个错误,即最大长度超过了Web配置中的更改

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="1048576" />
    </system.web>
</configuration>

对于IIS7及更高版本,您还需要添加以下行:

<system.webServer>
   <security>
      <requestFiltering>
         <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
   </security>
 </system.webServer>

注意:maxAllowedContentLength以字节为单位测量,而maxRequestLength以千字节为单位,这就是此配置示例中值不同的原因。 (两者相当于1 GB。)

答案 1 :(得分:0)

您的参数名称与表单输入元素名称不匹配,您应该在后面的代码和html中使用“file”或“files”。 name="file"应为name="files"