在我的node.js应用中,我正在使用gm (一个Graphicsmagick封装器)和aws2js (Amazon CLI封装器)。问题是亚马逊需要知道内容长度,以便我可以将流放在S3上。
我正在通过创建流读取应用程序上载的图像文件:
我正在通过创建流读取应用程序上载的图像文件:
var fileStream=fs.createReadStream(file.path)
我将那个文件传递给gm,调整其大小,然后告诉它流式传输该文件。然后,我想将该流放入AWS中:
gm( fileStream, "some.png" ).
identify({bufferStream: true}, function(err, info) {
this.stream("png", function (err, stdout, stderr) {
if (err){console.log(err);cb(err);return;}
aws.S3.putStream(path, stdout, 'public-read', {'content-length': ?????, 'content-type': 'image/png'}, function (err, result) {
.....
}
});
});
});
问题在于亚马逊需要知道内容长度(这不是库的问题),以便放置流。 AWS不支持分块流。
有谁知道如何确定流的内容长度?或者唯一的解决方案是将其暂时写入磁盘,以流的形式读取文件,然后使用临时文件的内容长度将其放入亚马逊中?