node.js - 如何确定 S3.getObject() 中的数据类型

标签 node.js amazon-s3

S3的node.js API对getObject回调中返回的数据给出如下描述。来自 http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property :

Body — (Buffer, Typed Array, Blob, String, ReadableStream) Object data.

这是真的吗?有没有办法控制它是哪一个?

最佳答案

不知道能不能提前控制getObject()回调中提供的data.Body字段的类型。如果您只想确定是否收到了缓冲区,您可以尝试 Node's Buffer.isBuffer (data.Body) 类方法。

或者,您可能希望完全避免该问题,并使用 Amazon 的 S3 documentation 中的这种方法。 :

var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);

假设您将在典型的 node.js 异步回调环境中使用此代码,这样查看代码可能更有意义:

var fs = require('fs');

function downloadFile(key, localPath, callback) {
  var s3 = new AWS.S3();
  var params = {Bucket: 'myBucket', Key: key};
  var file = fs.createWriteStream(localPath);

  file.on('close') {
    callback();
  }

  file.on('error', function(err) {
    callback(err);
  });

  s3.getObject(params).createReadStream().pipe(file);
}

关于node.js - 如何确定 S3.getObject() 中的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25812384/

相关文章:

javascript - NodeJS 从 AWS S3 存储桶下载文件

ruby-on-rails - Paperclip w/Imagemagick、Amazon S3 和 Heroku - Imagemagick 和 S3 工作,但 Paperclip 字段未在数据库中设置。在开发中工作正常

mysql - AWS,将Sql Server迁移到MySql,从一个区域到另一个区域

node.js - Node js ffmpeg hls流声音重复并相互叠加

node.js - Nodejs无法连接oracle数据库?

mysql - 序列化创建类型错误: Cannot read property 'apply' of undefined

amazon-web-services - 如何将数据从 EBS 卷传输到 S3 存储桶?

javascript - NodeJS 图像处理/分析可能吗?

node.js - NodeJS/MongoDB - 错误 : Can't set headers after they are sent

php - AWS SignatureDoesNotMatch 错误但签名代码和 key 对似乎都有效