Ajax FileUpload & JQuery formData dans ASP.NET MVC

J’ai quelques problèmes avec l’envoi de formData à la méthode d’action côté serveur. Comme l’appel ajax n’envoie pas de fichiers au serveur, je dois append les données de téléchargement de fichier à formData manuellement, comme ceci:

 var formData = new FormData(); formData.append("imageFile", $("#imageFile").file); formData.append("coverFile", $("#coverFile").file); 

J’ai écrit la fonction jQuery qui doit poster des données de formulaire sur le serveur en utilisant un appel ajax Cela fonctionne, mais posté formData côté serveur est toujours nul!

c’est mon script:

   function SubmitButtonOnclick() { var formData = new FormData(); formData.append("imageFile", $("#imageFile").file); formData.append("coverFile", $("#coverFile").file); $.ajax({ type: "POST", url: '@Url.Action("EditProfile", "Profile")', data: formData, dataType: 'json', contentType: "multipart/form-data", processData: false, success: function (response) { $('#GeneralSection').html(response.responseText); }, error: function (error) { $('#GeneralSection').html(error.responseText); } }); }  

Edit 1: C’est la méthode d’action dans le contrôleur:

  public ActionResult EditProfile(ProfileGeneralDescription editedModel, HttpPostedFileBase imageFile, HttpPostedFileBase coverFile, ssortingng postOwnerUser) { try { if (postOwnerUser == User.Identity.Name) { // edit codes... var result = GetProfileGeneralDescription(postOwnerUser); return PartialView("_GeneralProfile", result); } else { var error = new HandleErrorInfo( new Exception("Access Denied!"), "Profile", EditProfile return PartialView("~/Views/Shared/Error.cshtml", error); } } catch (Exception ex) { var error = new HandleErrorInfo(ex, "Profile", EditProfile return PartialView("~/Views/Shared/Error.cshtml", error); } } 

Edit 2: Cshtml voir le contenu du fichier:

 @model Website.Models.ViewModel.Profile @using (Ajax.BeginForm("EditProfile", "Profile", new { postOwnerUser = User.Identity.Name }, new AjaxOptions() { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "GeneralSection" }, new { enctype = "multipart/form-data" })) { 
Edit Photos
Select profile picture: @Html.CheckBoxFor(modelItem => modelItem.DefaultCover)Remove profile photo
Select cover picture: @Html.CheckBoxFor(modelItem => modelItem.DefaultCover)RemoveCover
}

Toute astuce, lien ou exemple de code serait utile.
Merci d’avance!

Au lieu de Jquery Ajax, vous pouvez utiliser

   

Ça marche pour moi !!

Votre script avec des changements

  function SubmitButtonOnclick() { var formData = new FormData(); var file = document.getElementById("imageFile").files[0]; var file1 = document.getElementById("coverFile").files[0]; formData.append("imageFile", file); formData.append("coverfile", file1); $.ajax({ type: "POST", url: '@Url.Action("EditProfile","Default1")', data: formData, dataType: 'json', contentType: false, processData: false, success: function (response) { $('#GeneralSection').html(response.responseText); }, error: function (error) { $('#GeneralSection').html(error.responseText); } }); } 
    $("#btncatsave").click(function () { var Name = $("#txtName").val(); var formData = new FormData(); var totalFiles = document.getElementById("picfile").files.length; var file = document.getElementById("picfile").files[0]; formData.append("FileUpload", file); formData.append("Name", Name); $.ajax({ type: "POST", url: '/Category_Subcategory/Save_Category', data: formData, dataType: 'json', contentType: false, processData: false, success: function (msg) { alert(msg); }, error: function (error) { alert("errror"); } }); }); [HttpPost] public ActionResult Save_Category() { ssortingng Name=Request.Form[1]; if (Request.Files.Count > 0) { HttpPostedFileBase file = Request.Files[0]; } } 

J’ai pu télécharger un fichier via jquery à l’aide de l’iframe. Je l’ai expliqué dans mon message, veuillez suivre le lien pour obtenir la réponse.

http://kaushikghosh12.blogspot.com/2014/02/ajax-fileupload-on-all-browsers.html