因为后台添加了token身份验证 直接使用 upload 不能携带头部,从网上找了些例子 写了一个
html是这样的
<a href="javascript:;" class="leadIn" οnclick="importData()">数据导入</a>
<input type="file" accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" style="display:none" id="fileUpload" />
js部分这样的
function CommonUpload(type, url, token, data, fun) {
timestamp = gettimestamp(),
nonce = getnonce(8);
//signature1=getSign(timestamp,nonce,token,json);
$.ajax({
headers: {
timestamp1: timestamp,
nonce1: nonce,
//signature:signature1,
SignToken: token
},
type: type,
url: url ,
contentType: false,
processData: false,
data: data,
success: function (data) {
fun(data);
},
});
}
//导入数据----------------start----------------------
function importData() {
$("#fileUpload").trigger("click");
}
//监听upload
document.getElementById("fileUpload").addEventListener("change", function () {
onchange();
});
function onchange() {
var files = document.getElementById("fileUpload").files;
var data = new FormData();
if (files.length < 1) {
return
}
for (var i = 0; i < files.length ; i++) {
data.append(files[i].name, files[i]);
}
CommonUpload("post", url + "trastation/import", token, data, function (data) {
if (!data.success) {
alert(data.msg);
}
});
}
//导入数据-----------------------end-----------------------------
C#后台接收
public IHttpActionResult ImportData()
{
HttpFileCollection files = HttpContext.Current.Request.Files;
if (files.Count < 1)
{
return Ok(new ReturnModel(false, "未接收到文件"));
}
var fileName = files[0].FileName;
//if (!fileName.EndsWith(".xls"))
//{
// return Ok(new ReturnModel(false, "请上传xls文件"));
//}
var dataTable = NPOIHelper.ImportExceltoDt(files[0].InputStream);
}
转载:https://blog.csdn.net/weixin_37986763/article/details/102490026
查看评论