我使用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);

07-24 17:52
查看更多