Ich weiß nicht, ob Sie im Voraus den Typ der Daten steuern können. Body-Feld in der GetObject() -Rückruf bereitgestellt. Wenn Sie nur ermitteln möchten, ob Sie einen Puffer erhalten haben, können Sie die Klassenmethode Node's Buffer.isBuffer (data.Body) ausprobieren.
Alternativ könnten Sie das Problem zusammen und verwenden diesen Ansatz von Amazon S3 documentation vermeiden wollen:
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'};
var file = require('fs').createWriteStream('/path/to/file.jpg');
s3.getObject(params).createReadStream().pipe(file);
Vorausgesetzt, Sie werden mit diesem Code in einer typischen node.js Asynchron-Rückruf-Umgebung, könnte es machen mehr Sinn der Code wie so zu sehen:
var fs = require('fs');
function downloadFile(key, localPath, callback) {
var s3 = new AWS.S3();
var params = {Bucket: 'myBucket', Key: key};
var file = fs.createWriteStream(localPath);
file.on('close') {
callback();
}
file.on('error', function(err) {
callback(err);
});
s3.getObject(params).createReadStream().pipe(file);
}
Wenn der obige Code nicht heruntergeladen werden kann, wie fangen Sie den Fehler? – Mike
@Mike: Fügen Sie vor oder nach dem 'close' -Handler etwas hinzu: file.on (' error ', function (err) {callback (err);}); – Bruce
Danke! Vielen Dank! Vielen Dank! – Mike