动作控制器中的IformFile将值作为空,使用ajax请求将值传递给动作控制器

问题描述 投票:0回答:1

我正在尝试将ajax请求传递的值传递到控制器中的方法之一,但每次IFormFile文件为null。这是我的ajax请求:

 uploadFile: function (field, value) 
{
    var me = this;
    var view = me.getView();
    var fileuploadControl = me.lookupReference('ImportFile');
    var file = fileuploadControl.fileInputEl.el.dom.files[0];   
    var param = new FormData();
    param.append('files', file);
    var ajax = Ext.Ajax.request(
  {

        url: './../XYController/ImportCSVFile',
                data: param,
                method: 'POST',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                headers: { 'accept': '*/*' },
                processData: true,
                success: function (response, options) {
                    var result = JSON.parse(response.responseText);
                    if (mask) {
                        mask.destroy();
                    }   
                    Ext.Msg.alert("File Upload Successful");
   }

});

},

这是我的动作控制器:

[HttpPost]
[Route("XYController/ImportCSVFile")]
public IActionResult ImportCSVFile(IFormFile files)
{
  if(files!=null)
   {
    //do something
   }
}
json ajax asp.net-mvc asp.net-core http-post
1个回答
0
投票

对于文件上传,需要将contenttypefalse选项一起设置为processData。否则jQuery不会将其视为文件上传:

processData: false,
contentType: false,

请参阅here中的代码示例,无论使用ExtJS还是其他Jquery包装器库,都应该相同。

© www.soinside.com 2019 - 2024. All rights reserved.