【发布时间】:2014-12-06 09:11:47
【问题描述】:
我正在使用sails.js 并尝试将文件从Amazon s3 服务器直接传输到客户端。
要连接到 S3,我使用 s3 模块:https://www.npmjs.org/package/s3
该模块提供client.downloadFile(params) 和client.downloadBuffer(s3Params) 等功能。
我当前的代码如下所示:
var view = client.downloadBuffer(params);
view.on('error', function(err) {
cb({success: 0, message: 'Could not open file.'}, null);
});
view.on('end', function(buffer) {
cb(null, buffer);
});
我使用以下方法在控制器中捕获此缓冲区:
User.showImage( params , function (err, buffer){
// this is where I can get the buffer
});
是否可以将此数据流式传输为图像文件(使用buffer.pipe(res) 当然不起作用)。但是有没有类似的东西可以完全避免先将文件保存到服务器磁盘?
另一个选项client.downloadFile(params) 需要一个本地路径(在我们的例子中就是一个服务器路径)
【问题讨论】:
-
您需要确定 S3 链接指向您的数据的位置,通常采用
bucketname.s3.amazonaws.com/path/to/file的形式。然后从那里您可以直接访问公共文件,或者您可以实现一种访问私有文件的方式(希望有人知道那里有相关文档) -
@ZekeSonxx 我已经知道路径了。我实际上是在尝试掩盖路径
标签: node.js amazon-s3 sails.js