这里最主要的地方就是enctype的参数要改成“multipart/form-data”,另外 input输入框的type类型要改为 file,前端页面的主要配置就是上面代码所示。
在app里面引入模块
var formidable =require('formidable');
var ejsExcel=require('ejsexcel');
var fs=require('fs');
1.先用node有一个上传文件夹uploud,也就是上传了一个execl填好的表
2.解析数据execl数据,拼接成json数据传给后台
3.用request请求后台接口,但是Authorization的凭证在公共方法里面写着所以要用node存到cookieKey,然后取cookieKey
//使用fs将excel文件读取到buffer中
app.use('/import',function(req, res, next) {
var form =new formidable.IncomingForm();
form.keepExtensions =true;
form.uploadDir = __dirname +'/../rlb/upload';
// form.encoding = 'utf-8';
// form.maxFieldsSize = 2 * 1024 * 1024;
form.parse(req,function (err, fields, files) {
if (err) {
console.log('文件上传错误!');
return;
}
var path = files.import.path;
// var path = files.file.path;
var arr =path.split('\\');
var name =arr[arr.length -1];
var url ="/upload/" +name;
//对excel文件进行解析读取数据
var list=[];
var isHouse=true;
var exBuf =fs.readFileSync(__dirname +url);
ejsExcel.getExcelArr(exBuf).then(exlJson => {
//使用getExcelArr函数读取buffer后,得到的是excel工作表文件
let workBook = exlJson;
//拿到工作表里面的第一个工作簿
let workSheets =workBook[0];
workSheets.forEach((item, index) => {
console.log(item);
if(index==0){
if(item[0]=='热力卡号'){
isHouse=true;
}else {
isHouse=false;
}
}
if (index!=0&&item.length!=0){
if(isHouse){
list.push({'userCardNumber':item[0],'userName':item[1],'phone':item[2],'companyName':item[3],'stationName':item[4],'villageName':item[5],'buildingNo':item[6],'unit':item[7],'floorNo':item[8],'roomNo':item[9],'useArea':item[10],'startDate':item[11],'netDate':item[12],'hotStatus':item[13],'flowUser':item[14],'meterNo':item[15],'userType':item[16],'historyMoney':item[17]});
}else {
list.push({'villageName':item[0],'pName':item[1],'cName':item[2],'aName':item[3],'address':item[4],'companyName':item[5],'stationName':item[6],'netArea':item[7],'buildingArea':item[8],'useArea':item[9],'lockingArea':item[10],'notArea':item[11],'buildingNo':item[12]});
}
}
});
// console.log(JSON.stringify(list));
var urlEnd=isHouse==true?'importRoomInfo':'importVillage';
request({
url:'http://180.76.57.168:8767/api/'+urlEnd,
// url: 'http://192.168.1.104:8767/api/'+urlEnd,
method:"POST",
json:true,
async:false,
headers: {
"content-type":"application/json",
"Authorization":req.cookies.cookieKey,
},
body:list
},function(error, response, body) {
console.log(body);
if (!error && body.status ==200) {
}
});
res.render('house/houseInfo/house_list');
}).catch(error => {
console.log("************** had error!");
console.log(error);
});
});
});