私のnode.jsアプリケーションでは、gm (a graphicsmagick wrapper)とaws2js (amazon cli wrapper)を使用しています。問題は、Amazonがコンテンツの長さを知っている必要があり、ストリームを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) {
.....
}
});
});
});
問題はAmazonがストリームを置くために、コンテンツの長さ(そのないライブラリを)知っている必要があるということです。 AWSはチャンクストリームをサポートしていません。
ストリームのコンテンツの長さをどのように判断することができますか?または、唯一の解決策は、ディスクに書き込み、ストリームとしてファイルを読み込んだ後、一時ファイルの内容の長さのアマゾンに置くことです。
あなたはこれを解明しましたか?私はまったく同じことをしようとしています... – Bill
Bill;私は結果をバッファリングし、そのサイズを取得します。悲しいことに、アマゾンはサイズを知る必要があり、ストリームがうまくいくので、それを行う他の方法はありません - ストリームは固定長ではありません。 – japrescott