以下のコードは、AWS S3から少なくとも1つのオブジェクト(おそらく2つ)を取得します。Javascriptを使用してAWS S3から複数のオブジェクトを取得し、それらが取得されたときに関数を実行する方法は?
私はAWS JS SDKを使用しています。現在、ループ内からオブジェクトを取得しています。この時点で、1つの要求で複数のオブジェクトを取得できるようになりました。
オブジェクトが取得された後、私はいくつかの画像合成を行いたい(オブジェクトは画像です)。
私の問題は、残りのコードがオブジェクトを正常に取得する前に実行されることです。コンソールにログオンしたときにはobjects
が変更されないため、私はこれを知っています。
イメージを操作するための他の機能を実行する前に、S3からオブジェクトを受け取るにはどうすればよいですか?
var app = require('../application');
exports.generate = function (req, res) {
objects = {
logo: req.body.logo,
}
if (!req.body.background.startsWith('#')) {
objects.background = req.body.background;
}
for (type in objects) {
var params = {
Bucket: "my-bucket",
Key: objects[type]
};
app.s3.getObject(params, function(err, data) {
if (err) {
console.log(err, err.stack);
}
else {
objects[type] = data;
}
});
}
if (objects.background) {
gm(objects.logo).append(objects.background).write('temp.jpg', function() {
console.log('Logo and background have been appended');
});
}
console.log(objects);
console.log('Finished');
}
コンソールは、画像は、ログは、各画像のデータ本体を示すれるべきで取得され、次の
{ logo: 'Original 106fm Logo #268390.jpg', background: 'test.jpg' }
Finished
を記録します。
複数のファイルをダウンロードするには、次のラッパーモジュールを使用することができ、あなたの応答をありがとうございました。私は私の操作を行うことができますが、私は一緒にファイルを追加する必要がありますので、上記の方法は動作しませんので、私は両方のファイルが必要です。他のアイデア? –
こんにちは、要点の答えを更新してください。そのnodejsモジュールを使用して、複数のファイルを一度にダウンロードすることができます。それはすべてのファイルをダウンロードする約束を返すでしょう。 –