Sails.js将文件下载到客户端

时间:2018-05-02 20:11:09

标签: javascript http sails.js

在我的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)

2 个答案:

答案 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