【问题标题】:Sails.js Download File To ClientSails.js 下载文件到客户端
【发布时间】:2018-05-02 20:11:08
【问题描述】:

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

【问题讨论】:

    标签: javascript http sails.js


    【解决方案1】:

    我能想到的最简单的方法是在 assets 文件夹内的下载文件夹中生成文件。

    这样如果你提供下载链接为http://<url>/downloads/<uuid>.<ext>,如果文件存在则自动下载,否则抛出404

    【讨论】:

    • 我在assets中没有找到downloads文件夹,是否需要新建一个
    • 是的。您可以创建一个新的。
    【解决方案2】:

    您实际上可以创建文件流并使用管道发送它

    这是一个工作代码

        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测试的

    【讨论】:

      猜你喜欢
      • 2012-11-17
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 2017-09-06
      • 2014-07-05
      • 2018-12-01
      • 1970-01-01
      • 2022-07-21
      相关资源
      最近更新 更多