我正在尝试将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
}
}
对于文件上传,需要将contenttype
与false
选项一起设置为processData
。否则jQuery不会将其视为文件上传:
processData: false,
contentType: false,
请参阅here中的代码示例,无论使用ExtJS还是其他Jquery包装器库,都应该相同。