Hed*_*dge 6 download node.js koa
我正在使用Koa作为网络服务器来为我的Polymer应用程序提供服务.按下前端的按钮localhost:3000/export
被调用.在将一些文件打包到zip-archive之后,我想将文件下载发送到客户端.
在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);
});
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样的东西:
router.post('/export', function*(){
yield download(this, __dirname + '/test.zip')
})
Run Code Online (Sandbox Code Playgroud)
Jam*_*ore 23
您应该能够简单地设置this.body
为文件流
this.body = fs.createReadStream(__dirname + '/test.zip');
Run Code Online (Sandbox Code Playgroud)
然后根据需要设置响应标头.
this.set('Content-disposition', 'attachment; filename=' + filename);
this.set('Content-type', mimetype);
Run Code Online (Sandbox Code Playgroud)
saa*_*adq 15
对于将来看到此内容的任何其他人,值得一提的是attachment
,response
对象上有一个内置方法,可用于设置具有指定文件名的Content-Disposition
to attachment
.所以你可以这样做:
this.attachment('hello.txt')
Run Code Online (Sandbox Code Playgroud)
它与以下内容相同:
this.set('Content-disposition', 'attachment; filename=hello.txt')
Run Code Online (Sandbox Code Playgroud)
对于Koa 2:
ctx.attachment('hello.txt')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8653 次 |
最近记录: |