Home > Back-end >  ASP .NET MVC uploaded file is always null
ASP .NET MVC uploaded file is always null

Time:11-12

I'm trying to upload a JSON file, but the MVC controller is always interpreting it as null.

View:

<h3>OR</h3><br>
@Html.TextBox("jsonFile", null, new { type = "file" })

<div class="col-md-offset-2 col-md-10 ">
    <input type="submit" value="Create" class="btn btn-default submit-button" formaction="Create" />
</div>

Controller:

 public ActionResult Create(HttpPostedFileBase jsonFile)
 {
        MessageBox.Show("Create");
        String str;
        if (ModelState.IsValid)
        {
            if (jsonFile != null)
            {
                MessageBox.Show("File Upload Success");
                StreamReader jsonReader = new StreamReader(jsonFile.InputStream);
                str = jsonReader.ReadLine();

                MessageBox.Show(str);
            }
            else
            {
                MessageBox.Show("Null");   
            } 
            return RedirectToAction("Index");
        }
        return View(projectDetail);
    }

Its the part of bigger program and I have used following code for form:

    @using (Html.BeginForm( new { htmlAttributes = new { enctype = "multipart/form-data" } } ))
    {
    }

I get this button to upload files and file upload is also working well as I can see its uploaded status before I click Submit. Not sure why it's always null in the controller.

CodePudding user response:

Have you decorated your action method with "HTTPPOST" attribute? I can't see that in your create action.

 public ActionResult Create(HttpPostedFileBase jsonFile)

And also you have to update your form as blow to have controller and action method.

@using (Html.BeginForm("Create", "ControllerName", FormMethod.Post, new { id = "FormCreate", enctype = "multipart/form-data"}))
  • Related