为了账号安全,请及时绑定邮箱和手机立即绑定

将文件数组从 Jquery ajax 发送到控制器操作

将文件数组从 Jquery ajax 发送到控制器操作

C#
喵喔喔 2022-12-24 14:18:39
我能够将单个文件作为 System.Web.HttpPostedFileBase 传递,但是当我传递相同的文件数组时,我在控制器的操作中得到 null。我试过发送文件数组。HTML:        <input type="file" id="Attachment1">        <input type="file" id="Attachment2">        <input type="file" id="Attachment3">        <input type="file" id="Attachment4">        <input type="file" id="Attachment5">Java脚本: var FileData = [];  $('input').each(function () {                var type = $(this).attr("type");                if (type == "file") {                    FileData.push($(this).get(0).files[0]);                }            });    var Data = new FormData();Data.append("Attachments", FileData);         if (url != '') {    $.ajax({        url: url,        data: Data,        type: "POST",        contentType: false,        processData: false,        success: function (data) {            alert("Saved successfully");        }    });}控制器:public ActionResult InsertDetails(System.Web.HttpPostedFileBase[] Attachments){   return Json(new { Success = false });}需要获取文件数组。提前致谢。
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

我找到了解决方案。我只需要为相同的键“附件”保留附加文件。现在我可以获取 HttpPostedFileBase 数组。


 var Data = new FormData();

 $('input').each(function () {

                var type = $(this).attr("type");

                if (type == "file") {

                    var FileData = $(this).get(0).files[0]);

                    Data.append("Attachments", FileData); 

                }

            });    


查看完整回答
反对 回复 2022-12-24
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

尝试一下:


    var Files = new FormData();    


         $('input').each(function () {

         var type = $(this).attr("type");

          if (type == "file") {

Files .append("Attachment"+$(this).attr("id"), $(this).get(0).files[0]);   

                        }

                    });    


        if (url != '') {

            $.ajax({

                url: url,

                data: Files ,

                type: "POST",

                contentType: false,

                processData: false,

                success: function (data) {

                    alert("Saved successfully");

                }

            });

        }


查看完整回答
反对 回复 2022-12-24
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这就是我以前将数组数据从javascript发布到mvc 控制器的方式,这会有点冗长,但我已经用注释解释了每一行,我希望这可以帮助你


javascript:


var formData = new FormData(); //declare formData

var arrayData = []; //declare array and push/append your data to it.


var name="abc";

arrayData.push(name);


//setting ArrayData to Json Object

var AllData = {

            getUserData: arrayData

        };


//appending Json Object to formdata with the key "mydata"

formData.append("mydata", JSON.stringify(AllData));


//sending formdata through ajax request

$.ajax({

      type: "POST",

      url: yourURLHere,

      processData: false,

      contentType: false,

      data: formData,

      cache: false,

      success: function (data) {

            //your program logic here

      }

});



控制器:


public async Task<HttpResponseMessage> SaveResponse()

{


//receiving json data from the key "mydata" we set earlier 

var getData = HttpContext.Current.Request.Params["mydata"];


//deserialize json object (you will need Newtonsoft.Json library)

var model = JsonConvert.DeserializeObject<MyModel>(getData);


//you will get all of your data in model variable

//do what you want to do with that data


}

这是模型类


public class MyModel

{

   //**dataList** will receive array data sent from javascript  

   public List<MyModel> dataList = new List<MyModel>();


   //Remember, whatever your push to array in javascript, should be declared here.

   public string name {get;set;}   


}


查看完整回答
反对 回复 2022-12-24
  • 3 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信