InvalidCastexception上传多个图像

问题描述:

嗨,大家好我正在创建一个使用MVC 5的应用程序,带有代码优先的数据库,下面的代码显示了我目前试图用来上传多个图像的代码,但是当我试图将' System.String'键入'System.Web.HttpPostedFileBase'。InvalidCastexception上传多个图像

感谢您的时间和任何有关这个问题的帮助,非常感谢。

图像控制器

// GET: Images/Upload 
      [HttpGet] 
      public ActionResult Upload() 
      { 
       return View(); 
      } 

      // POST: Images/Upload 
      [HttpPost] 
      public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles) 
      { 

        HttpFileCollectionBase files = Request.Files; 
        foreach (HttpPostedFileBase file in files) 
        { 
         int length = file.ContentLength; 
         string type = file.ContentType; 
         string filename = file.FileName; 
        } 
        return RedirectToAction("Upload"); 

      } 

上传观点

@{Layout = null;} 
<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Upload</title> 
</head> 
<body> 
    <form method="post" action="~/Images/Upload" id="form1" enctype="multipart/form-data"> 
        @if (ViewData.Model != null) 
        { 
         foreach (var item in ViewData.Model) 
         { 
          <img src="/Images/@item["Path"]" alt="FileUpload Image" /> 
         } 
        } 

        <input type="file" name="uploadFiles" id="FileUpload" multiple="multiple" /> 

        <input type="submit" name="btnSubmit" value="Upload" id="btnSubmit" />  
    </form> 
</body> 
</html> 
+0

异常消息也告诉您其中输入你想投以及它不能铸造的类型。这是一个非常漂亮的援助... –

+0

嗨Adriano,它说它是因为我试图将System.String'键入'System.Web.HttpPostedFileBase'。 ,这是导致问题的文件名和类型,如果他们不是字符串?任何想法替代谢谢你的时间 – WellThisIsAkward

你不能这样做,

foreach (HttpPostedFileBase file in files)

因为HttpFileCollection枚举将返回的文件名(string )但不是HttpPostedFileBase所以你会得到的循环,而不是HttpFileCollectionBase

public ActionResult Upload(IEnumerable<HttpPostedFileBase> uploadFiles) 
{ 
     foreach (var file in uploadFiles) 
     { 
      int length = file.ContentLength; 
      string type = file.ContentType; 
      string filename = file.FileName; 
     } 
     return RedirectToAction("Upload"); 
} 

InvalidCastexception

使用uploadFiles或使用for和索引:

HttpFileCollectionBase files = Request.Files; 
for (int i = 0; i < files.Count; i++) 
{ 
    int length = files[i].ContentLength; 
    string type = files[i].ContentType; 
    string filename = files[i].FileName; 
}