很常见的需求:将后台动态请求获取的数据,导出为excel格式文件,在浏览器端供用户下载:
经过不停的踩坑,基本上实现了功能,代码如下:
值得一提的是,koa在this.body这块输出二进制文件卡壳了;参考了之前koa文件下载的代码;采用中间方法,将生成的数据写入到excel文件,然后读出文件,最后将读出的结果输出到this.body成功实现:另一个更好的办法就是直接将处理的原始数据,转成二进制输出到body,查了资料后通过Buffer实现了。
入口文件 server.js
var koa =require('koa');
var app = koa();
var koa_router =require('koa-router');
var router = koa_router();
var serve = require('koa-static');
//加载以控制器为主的集中路由
var indexRoute=require('./route/index')(router);
app.use(indexRoute.routes());
//自定义404错误页中间件,两种方式
app.use(function*(next){
if(this.status){
if(404==this.status){
console.log('find some error');
this.status=404;
this.body ='sorry!some problems may happened,we will solve it as soon as