【问题标题】:IformFile in the action controller takes the value as null, value is pass to the action controller using ajax request动作控制器中的IformFile取值为null,使用ajax请求将值传递给动作控制器
【发布时间】:2020-01-07 16:10:55
【问题描述】:

我试图将从 ajax 请求传递的值传递给控制器​​中的方法之一,但 IFormFile 文件每次都是空的。 这是我的 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】:

    对于文件上传,contenttype 需要设置为 false 以及 processData 选项。否则 jQuery 不会将此视为文件上传:

    processData: false,
    contentType: false,
    

    查看来自here 的代码示例,无论使用 ExtJS 还是其他 Jquery 包装库,都应该相同。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多