【发布时间】: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