1.html部分,选择文件(以excel为例) ) ) )。
2.js上传文件的部分主要使用jequery和FormData
var formdata=new formdata ($ (' # upload form ' ) [0];
formdata.append('maptype ',' baidu ' );
$.Ajax({
url: '/upload/order ',
类型: ' post ',
数据:格式、
processData: false,//告诉jquery不要处理发送的数据
告诉jquery不要设置内容类型: false//content-type请求标头
}.done(function(RES ) )。
}.Fail(function(RES ) )
console.log ('失败);
);
3 .后台节点接收部,为了分析excel使用' node-xlsx '
constexpress=require(express );
constfs=require('fs );
常量格式=要求(formidable );
constxlsx=Require(node-xlsx );
const router=express.Router (;
router.post((/order ),) req,res )={
console.log (' # # # # # post/upload # # # # ' );
let fileTypeError=false;
const target path=` $ { _ _ dirname }/upload `;
const form=new formidable.incoming form (;
form.encoding='utf-8 ';
form.keepExtensions=true;
form.maxfieldssize=10 * 1024 * 1024;
form.uploadDir=targetPath;
const files=[];
const fields=[];
let mapType='gaode ';
ORM.on(field ),) field,value )={ //上传相关参数mapType ),baidu ) )。
field===' maptype ' ) mapType=value;
fields.push([field,value];
);
ORM.on(file ),) field,file )={ //接收文件触发器
console.log (uploadfile : $ { file.name } );
//判断文件类型是否为xlsx
if(file.type!==' application/vnd.open XML formats-office document.spread sheet ml.sheet ' } {
fileTypeError=true;
}
files.push([field,file] );
);
FORM.on('end ',) )={
//遍历上传文件
let fileName=' ';
let obj=' ';
constfolderexists=fs.exists sync (target path );
文件夹执行{ if }
const dirlist=fs.readdir sync (target path );
Dirlist.Foreach(Async(item )={
if (! fs.stat sync ` $ { target path }/$ { item } ` }.is directory () {
console.log (parse item : $ { target path }/$ { item } ` );
filename=` $ { target path }/$ { item } `;
if (! 文件类型错误) {
//分析Excel
obj=xlsx.parse(filename,{
单元格数据:真
);
console.log(JSON.stringify ) obj );
res.send({
代码: 10000、
msg:“数据分析成功”、
resOrders: resOrderObjs
);
} else {
res.send({
代码: 20003、
msg: '文件格式不正确'
);
}
fs.UNLinksync(Filename ); //delete file
}
);
} else {
res.send({
RTN代码: '1',
rtnInfo:“系统错误”
);
}
);
FORM.on(error ),) err )={
res.send({
RTN代码: '1',
rtnInfo: '上传错误'
);
);
ORM.on(aborted ),)={
res.send({
RTN代码: '1',
rtnInfo: '放弃上传'
);
);
FORM.parse(req );
);