无法将HttpFileCollectionBase转换为HttpFileCollection

时间:2010-07-08 23:04:10

标签: asp.net-mvc file-upload

我有一个部分观点:

<% using (Html.BeginForm("add", "home", FormMethod.Post, 
   new { enctype = "multipart/form-data" })){%>
   <input name="IncomingFiles" type="file" />
   <div class="editor-field"><%: Html.TextBox("TagsInput") %></div>
   <p><input type="submit" value="Create" /></p><% } %>

这在控制器中:

    [HttpPost]
    public ActionResult add(HttpFileCollection IncomingFiles, string TagsInput)
    {
         return View();
    }

它不会将我上传的文件与HttpFileCollection匹配,它们就是HttpFileCollectionBase。 我怎样才能让视图传递给我一个HttpFileCollection?

我是否需要任何特定的BeginForm args?

谢谢!

1 个答案:

答案 0 :(得分:5)

在你的行动方面做这样的事情。您不会将文件作为参数传递:

[HttpPost]
public ActionResult add(string TagsInput) {
  if (Request.Files.Count > 0) {
    // for this example; processing just the first file
         HttpPostedFileBase file = Request.Files[0];
 if (file.ContentLength == 0) {
      // throw an error here if content length is not > 0
      // you'll probably want to do something with file.ContentType and file.FileName
      byte[] fileContent = new byte[file.ContentLength];
      file.InputStream.Read(fileContent, 0, file.ContentLength);
      // fileContent now contains the byte[] of your attachment...
    }  
  }
  return View();
}