功能需求:上传excel文件并解析内容
最简单的方法是
1.上传到服务器
2.使用node-xlsx解析文件并返回
我又想新增一个就是能直接在内存中解析而不保存到服务器。对于小应用来说这并不占用资源。
在koa里解析表单采用了封装过的 co-busboy。 读取出来后part是一个读取流,正常情况是通过pipe写入到一个写入流1
2
3
4
5
6
7
8
9
10var parse = require('co-busboy');
app.use(function* (next) {
var parts = parse(this, {
autoFields: true
})
var part
while (part = yield parts) {
part.pipe(fs.createWriteStream('some file.txt'))
}
})
然而node-xlsx只能解析一个buffer或者一个文件1
2var xlsxFile = xlsx.parse( Buffer.concat(chunks, size) );
console.log(xlsxFile[0].data)
那么现在的问题变成是: 怎样把一个读取流的数据写入到buffer中。
只需要箭筒读取流part的data和end事件,把buffer重新拼接出来就可以了。
当然需要捕捉错误,而且需要用Promise形式来重写
当然 下面的代码并没有处理同时传多个excel文件的情况。。。。
1 |
|
发下内存泄漏了!!!!待解决….