在我的Sails.js(v0.12)应用中,我们在myApp / downloads / uuid-filename.ext中生成一个文件。但是我找不到关于如何将文件下载到客户端的可靠答案。
我的第一个想法是将uuid传递给用户并允许他们从URL下载它。但是,即使我知道完整的文件名,我也不确定如何从客户端访问文件。
第二个想法是将内容流式传输给用户,但没有Express.js“res.download()”函数,似乎不可能。我在sails.js文档中找到了“res.attachment”。然而,这个例子丝毫没有帮助。
如何从我的API(Sails.js v0.12)下载文件到我的客户端(AngularJS)
答案 0 :(得分:1)
您实际上可以创建文件流并使用管道发送它
这是一个工作代码
let filename = req.param("filename");
let filepath = req.param("filepath");
let file = require('path').resolve(sails.config.appPath+'//'+filepath)
if(fs.existsSync(file))
{
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
let filestream = fs.createReadStream(file);
filestream.pipe(res);
}else{
res.json({error : "File not Found"});
}
使用sailsJS(0.12)和AngularJS
进行测试答案 1 :(得分:1)
我能想到的最简单的方法是在assets
文件夹中的下载文件夹中生成文件。
这样,如果您将下载链接提供为http://<url>/downloads/<uuid>.<ext>
,则会在文件存在时自动下载,否则会抛出404
。