【问题标题】:How to create API that will force download file with HAPI JS如何创建将强制使用 HAPI JS 下载文件的 API
【发布时间】:2017-08-01 11:48:10
【问题描述】:

我正在使用 NodeJS 并使用 HAPI 创建用于上传和下载文件的 API。上传时,我读取文件信息(文件名、mime 类型和文件内容)并将其存储在数据库中。文件内容存储为 base64 编码字符串。

我想做的是创建API,所以当客户端点击它时,它将被强制下载一个使用下面的代码根据存储的信息构建的文件

server.route({
  method: 'GET',
  path:'/file', 
  handler: function (request, reply) {

    var fileData = // get file content; 
    var mime = // get file mime-type;

    var fileBuffer = new Buffer(fileData, 'base64');
    reply(fileBuffer)
      .header('Content-disposition', 'attachment; filename=' + fileName)
      .header('Content-type', mime).header('Content-length', fileBuffer.length).encoding('binary');
  }
})

但是这段代码看起来仍然无法正常工作,如果我点击 API,它将永远加载过程并且没有文件下载。任何人都可以给我建议如何正确地做到这一点?

更新

代码正确且运行良好。我之前遇到的问题是由另一个原因引起的,不正确的编码/解码机制。

【问题讨论】:

  • 此时代码有什么问题?
  • 对不起,我之前发布了不完整的问题。我已经更新了它。谢谢@morgh

标签: node.js hapijs


【解决方案1】:

查看处理文件的 hapi 惰性插件,repo 是 here

【讨论】:

  • 是的,惰性确实提出了解决方案。所以+1。但你最好写一个更满意的答案
猜你喜欢
  • 2017-10-25
  • 1970-01-01
  • 2013-12-18
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
相关资源
最近更新 更多