I'm attempting upload multiple files in ASP.NET MVC and I have this simple foreach loop in my controller
foreach (HttpPostedFileBase f in Request.Files)
{
if (f.ContentLength > 0)
FileUpload(f);
}
The previous code generates this error:
Unable to cast object of type 'System.String' to type 'System.Web.HttpPostedFile'.
What I don't understand is why Request.Files[1] returns an HttpPostedFileBase but when it's iterated over, it returns strings (presumably the file names).
Note: I know this can be solved with a for loop.
Also, I tried using HttpPostedFile, with the same error.
Best Answer
The enumerator on the
HttpFileCollection
returns the keys (names) of the files, not theHttpPostedFileBase
objects. Once you get the key, use theItem
([]
) property with the key (filename) to get theHttpPostedFileBase
object.