在我的node.js应用程序中,我使用的是gm (a graphicsmagick wrapper)和aws2js (amazon cli wrapper)。问题是亚马逊需要知道内容长度,以便我可以将流传输到S3上。获取流的内容长度
我的图片上传到我的应用程序,通过创建一个流中读取该文件:
var fileStream=fs.createReadStream(file.path)
我传递文件,以通用,调整其大小,然后告诉它流该文件。然后,我希望把他们流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不支持分块流。
有谁知道我怎么能确定一个流的内容长度?或者唯一的解决方案是将tmp写入磁盘,将文件作为流读取,然后将其与temp文件的内容长度一起放入amazon中?
你有没有想过这个?我正在尝试做同样的事情...... – Bill 2012-08-07 23:48:00
Bill;我缓冲结果并获得它的大小。可悲的是,没有其他的方法可以做到这一点,因为亚马逊需要知道尺寸和流是否合适 - 流 - 没有固定的长度。 – japrescott 2012-08-13 12:00:42