我使用koa作为web服务器来服务我的聚合物应用程序。按下前端的一个按钮后,将调用localhost:3000/export
。我想在将一些文件打包到一个zip存档之后,将文件下载发送到客户端。
在koa.js里怎么做?
下面是一个如何在express中执行的示例(另一个选项是download-helper
app.get('/export', function(req, res){
var path = require('path');
var mime = require('mime');
var file = __dirname + '/upload-folder/dramaticpenguin.MOV';
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
我在找这样的东西:
router.post('/export', function*(){
yield download(this, __dirname + '/test.zip')
})
最佳答案
您应该能够简单地将this.body
设置为文件流
this.body = fs.createReadStream(__dirname + '/test.zip');
然后根据需要设置响应头。
this.set('Content-disposition', 'attachment; filename=' + filename);
this.set('Content-type', mimetype);