Le téléchargement de fichier simple renvoie NULL?

J’essaie de faire mon premier téléchargement de fichier simple dans MVC 5. Je suis une suite d’exemples que j’ai trouvés mais, pour une raison quelconque, dans mon ActionResult “Create”, le fichier uploadFile arrive toujours avec la valeur NULL, de sorte que le code de téléchargement est ne jamais courir. Quelqu’un voit ce que je pourrais faire mal?

@{ ViewBag.Title = "Create"; Layout = "~/Views/Shared/_Layout.cshtml"; } 

Documents.

Upload a new document.

@using (Html.BeginForm("Create", "Documents", FormMethod.Post, new { enctype = "multipart/form-data" })) {

Select a file to upload.

@ViewBag.Message
}

Voici mon contrôleur:

 // POST: Documents/Create [HttpPost] public ActionResult Create(HttpPostedFileBase uploadFile) { try { if(uploadFile != null && uploadFile.ContentLength > 0) { ssortingng filePath = Server.MapPath("../SiteDocuments" + uploadFile.FileName); uploadFile.SaveAs(filePath); } return RedirectToAction("Index"); } catch (Exception ex) { return View(); } } 

Le nom de votre élément d’entrée de fichier doit correspondre à celui de votre paramètre de méthode d’action.

Donc, mettez à jour votre balisage HTML pour avoir la même valeur d’atsortingbut name .

  

et votre méthode d’action sera

 [HttpPost] public ActionResult Create(HttpPostedFileBase uploadFile) { // do something } 

Vous pouvez également modifier le nom du paramètre de votre méthode d’action afin qu’il corresponde au nom de votre élément d’entrée de fichier.

  

et votre méthode d’action sera

 [HttpPost] public ActionResult Create(HttpPostedFileBase files) { if(files!= null && files.ContentLength > 0) { // do something } } 

Lorsque vous ajoutez l’atsortingbut multiple="multiple" à l’élément en entrée, le navigateur permet à l’utilisateur final de sélectionner plusieurs fichiers à la fois. Dans ce cas, si votre paramètre de méthode d’action est une instance unique d’un object HttpPostedFileBase , il recevra le premier fichier des n fichiers sélectionnés. Si vous voulez tous les fichiers, vous pouvez changer votre paramètre pour une collection telle que

 [HttpPost] public ActionResult Create(IEnumerable files) { if (files != null && files.Any()) { foreach (var file in files) { if (file.ContentLength > 0) { //do something } } } }