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>
答
你不能这样做,
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;
}
异常消息也告诉您其中输入你想投以及它不能铸造的类型。这是一个非常漂亮的援助... –
嗨Adriano,它说它是因为我试图将System.String'键入'System.Web.HttpPostedFileBase'。 ,这是导致问题的文件名和类型,如果他们不是字符串?任何想法替代谢谢你的时间 – WellThisIsAkward