node.js - 使用 Koa 启动文件下载

标签 node.js download koa

我正在使用 Koa 作为网络服务器来为我的 Polymer 应用程序提供服务。在前端按下按钮 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')
})

最佳答案

对于以后看到此内容的任何其他人,值得一提的是 response 对象上有一个内置的 attachment 方法,您可以使用它来设置 Content-Disposition 到具有指定文件名的 attachment。所以你可以这样做:

this.attachment('hello.txt')

这将与以下内容相同:

this.set('Content-disposition', 'attachment; filename=hello.txt')

对于 Koa 2:

ctx.attachment('hello.txt')

关于node.js - 使用 Koa 启动文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33482688/

相关文章:

javascript - 如何使用js将浏览器中的内容保存到本地?

node.js - 使用 koa-router 获取请求参数

ajax - Koa-Bodyparser发送POST请求时出错 "invalid JSON, only supports object and array"

node.js - 在 Node 中返回大量数据的良好实践

node.js - MongoDB:查询结果匹配数组中的任意值

javascript - 为什么我收到 "(node:7424) UnhandledPromiseRejectionWarning"已处理错误消息?

java - Servlet 输出流响应出现问题

javascript - XMLHttpRequest Access-Control-Allow-Origin 错误 Google Drive API

javascript - 不允许使用匿名 block ,除非它们是 mixin 的一部分 - Jade & Node

javascript - coffeescript 能否在 Node 运行时执行期间输出 sourcemap(非预编译)?