Sails.js 下载文件到客户端
Sails.js Download File To Client
在我的 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)
您实际上可以创建文件流并使用管道发送它
这是一个工作代码
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
测试的
我能想到的最简单的方法是在 assets
文件夹内的下载文件夹中生成文件。
这样如果你提供下载 link 作为 http://<url>/downloads/<uuid>.<ext>
,如果文件存在它会自动下载,否则会抛出 404
.
在我的 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)
您实际上可以创建文件流并使用管道发送它
这是一个工作代码
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
测试的我能想到的最简单的方法是在 assets
文件夹内的下载文件夹中生成文件。
这样如果你提供下载 link 作为 http://<url>/downloads/<uuid>.<ext>
,如果文件存在它会自动下载,否则会抛出 404
.