使用 AJAX Post 将 Excel 文件传递到服务器
Passing an Excel file to server using AJAX Post
我只是希望能够使用 html 输入类型="file" 到 select 和 Excel 文件
<input type="file" id="UploadedFile" name="UploadedFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
然后将所选文件传回服务器 - 最好使用 AJAX post:
var serviceURL = appRoot + 'Register/ImportTasks'
$j.ajax({
type: "post",
url: serviceURL,
data: (??? Not sure how to present here ???),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
具体来说,我看不出如何将 'file' 作为数据呈现给 AJAX 调用。
public void ImportTasks(DataType?? uploadedExcelFile)
{
..... Doing stuff ...
}
然后我不确定我应该告诉方法在调用它时期望的参数数据类型是什么?
这是一个基本示例。你应该使用 FormData
var formData = new FormData();
var uploadFiles = document.getElementById('js-upload-files').files;
this.formData.append("MyKey", uploadFiles[0]);
$.ajax({
type: "POST",
url: 'Controller/Upload',
data: formData,
dataType: 'json',
contentType: false,
processData: false,
complete: this.onComplete.bind(this)
});
编辑
忘记控制器密码
[HttpPost]
public virtual BetterJsonResult Upload()
{
foreach (var fileKey in Request.Files)
{
...Request.Files[fileKey.ToString()] //access it like this
}
}
我只是希望能够使用 html 输入类型="file" 到 select 和 Excel 文件
<input type="file" id="UploadedFile" name="UploadedFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
然后将所选文件传回服务器 - 最好使用 AJAX post:
var serviceURL = appRoot + 'Register/ImportTasks'
$j.ajax({
type: "post",
url: serviceURL,
data: (??? Not sure how to present here ???),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: successFunc,
error: errorFunc
});
具体来说,我看不出如何将 'file' 作为数据呈现给 AJAX 调用。
public void ImportTasks(DataType?? uploadedExcelFile)
{
..... Doing stuff ...
}
然后我不确定我应该告诉方法在调用它时期望的参数数据类型是什么?
这是一个基本示例。你应该使用 FormData
var formData = new FormData();
var uploadFiles = document.getElementById('js-upload-files').files;
this.formData.append("MyKey", uploadFiles[0]);
$.ajax({
type: "POST",
url: 'Controller/Upload',
data: formData,
dataType: 'json',
contentType: false,
processData: false,
complete: this.onComplete.bind(this)
});
编辑
忘记控制器密码
[HttpPost]
public virtual BetterJsonResult Upload()
{
foreach (var fileKey in Request.Files)
{
...Request.Files[fileKey.ToString()] //access it like this
}
}