Sunday, June 10, 2012

File Upload Mvc3.0

I want to upload an excel file in mvc3.0. How can I upload the file using html input file control.

Source: Tips4all


  1. You don't use a file input control. Server side controls are not used in ASP.NET MVC. Checkout the following blog post which illustrates how to achieve this in ASP.NET MVC.

    So you would start by creating a an HTML form which would contain a file input:

    @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    <input type="file" name="file" />
    <input type="submit" value="OK" />

    and then you would have a controller to handle the upload:

    public class HomeController : Controller
    // This action renders the form
    public ActionResult Index()
    return View();

    // This action handles the form POST and the upload
    public ActionResult Index(HttpPostedFileBase file)
    // Verify that the user selected a file
    if (file != null && file.ContentLength > 0)
    // extract only the fielname
    var fileName = Path.GetFileName(file.FileName);
    // store the file inside ~/App_Data/uploads folder
    var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
    // redirect back to the index action to show the form once again
    return RedirectToAction("Index");

  2. to transfer to byte[] (e.g. for saving to DB):

    using (MemoryStream ms = new MemoryStream()) {
    byte[] array = ms.GetBuffer();

  3. Below is the method to upload a file:
    form action="" method="post" enctype="multipart/form-data"
    label for="file">Filename:</label
    input type="file" name="file" id="file" /
    input type="submit" /