Uploading both data and files in one form using Ajax?

后端 未结 10 829
无人共我
无人共我 2020-11-21 05:48

I\'m using jQuery and Ajax for my forms to submit data and files but I\'m not sure how to send both data and files in one form?

I currently do almost the same with b

10条回答
  •  我在风中等你
    2020-11-21 06:46

    I was having this same issue in ASP.Net MVC with HttpPostedFilebase and instead of using form on Submit I needed to use button on click where I needed to do some stuff and then if all OK the submit form so here is how I got it working

    $(".submitbtn").on("click", function(e) {
    
        var form = $("#Form");
    
        // you can't pass Jquery form it has to be javascript form object
        var formData = new FormData(form[0]);
    
        //if you only need to upload files then 
        //Grab the File upload control and append each file manually to FormData
        //var files = form.find("#fileupload")[0].files;
    
        //$.each(files, function() {
        //  var file = $(this);
        //  formData.append(file[0].name, file[0]);
        //});
    
        if ($(form).valid()) {
            $.ajax({
                type: "POST",
                url: $(form).prop("action"),
                //dataType: 'json', //not sure but works for me without this
                data: formData,
                contentType: false, //this is requireded please see answers above
                processData: false, //this is requireded please see answers above
                //cache: false, //not sure but works for me without this
                error   : ErrorHandler,
                success : successHandler
            });
        }
    });
    

    this will than correctly populate your MVC model, please make sure in your Model, The Property for HttpPostedFileBase[] has the same name as the Name of the input control in html i.e.

    
    
    public class MyViewModel
    {
        public HttpPostedFileBase[] UploadedFiles { get; set; }
    }
    

提交回复
热议问题