我想使用 ajax 将文件上传到 ASP.Net MVC 控制器
我的 JavaScript 代码是这样的,基本上每次用户更改输入值时,它都会自动将文件上传到控制器
var formdata = false;
if (window.FormData) {
formdata = new FormData();
}
$('input[name=default_export_filename]').change(function() {
var i = 0, len = this.files.length, img, reader, file;
for ( ; i < len; i++ ) {
file = this.files[i];
if (file.type.match(/spreadsheet/) || file.type.match(/ms-excel/)) {
if ( window.FileReader ) {
reader = new FileReader();
reader.onloadend = function (e) {
//showUploadedItem(e.target.result, file.fileName);
};
reader.readAsDataURL(file);
}
if (formdata) {
formdata.append("default_export_filename", file);
}
}
}
if (formdata) {
$.ajax({
url: root + mod + '/uploaddef',
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (res) {
console.log(res);
}
});
}
});
在控制器端,我无法使用它捕获该文件
[HttpPost]
public ActionResult UploadDEF(HttpPostedFileBase file)
{
var jsonData = new
{
response = 3
};
return Json(jsonData); ;
}
或这个
[HttpPost]
public ActionResult UploadDEF(FormCollectionfile)
{
var jsonData = new
{
response = 3
};
return Json(jsonData); ;
}
文件参数始终为空。但是在萤火虫中,我可以看到浏览器正在将文件发布到服务器。我应该用什么对象来捕获文件?
我意识到旧浏览器不支持 FormData 对象,但我的客户都使用最新的浏览器。所以这不是问题。