For those who want to upload files using ASP.NET MVC will find that the process and objects you used in ASP.NET WebForms has changed slightly for ASP.NET MVC.

MVC uses a HttpPostedFileBase object rather than the HttpPostedFile object that you may be used to.

This is the code I used recently to enable file uploading in my MVC app.

In the View:

<form action="/home/Import" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <input type="submit" name="submit" value="Submit" />
</form>

and in the Controller:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Import(FormCollection form)
{
    foreach (string file in Request.Files)
    {
        HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;
        if (hpf.ContentLength != 0)
        {
            StreamReader sr = new StreamReader(hpf.InputStream);
            //Do Something with Stream
        }
        else
        {
            return View("ImportFailed");
        }
    }
    return View("ImportSucceeded");
}

Leave a Reply