是否可以识别可读流的长度/大小?

时间:2014-08-07 15:32:24

标签: node.js knox-amazon-s3-client

我正在尝试使用gm.js调整节点中的文件大小,并使用.stream()创建可调整大小的图像的可读流。现在我想使用knox.js .putStream()上传它,但Content-Length是必需的标题。是否可以识别可读流的大小,以便我可以在Content-Length标题中使用它?

先谢谢你们。

1 个答案:

答案 0 :(得分:1)

如果您的文件不是太大,您可以使用raw-body模块缓冲您的流,然后再将其上传到S3:

var rawBody = require('raw-body');
var knox = require('knox');

function putStream(stream, filepath, headers, next) {
  rawBody(stream, function(err, buffer) {
    if (err) return next(err);
    headers['Content-Length'] = buffer.length;
    knox.putBuffer(buffer, filepath, headers, next);
  });
};

如果您的文件非常大,最好使用带有knox-mpu模块的mscdex解决方案。