2017-06-29 1 views
0

Mein Lambda empfängt Bild Binärdaten eines Bildes von meinem Benutzer in seinem Körper (event.body).Hochladen von Bild von AWS Lambda auf S3 über API-Gateway im Binärformat

Ich versuche, es auf S3 hochzuladen, aber während es keinen Fehler wirft, es nicht uploadp roperly und zeigt ungültiges Format, wenn ich versuche, mit einem Bildbetrachter herunterladen und öffnen.

Auch muss ich die URl des hochgeladenen Bildes erhalten, um an den Benutzer zurückzukehren.

Bitte Hilfe!

module.exports.uploadImage = (event, context, callback) => { 
    var buf = new Buffer(new Buffer(event.body).toString('base64').replace(/^data:image\/\w+;base64,/, ""),'base64'); 
    var data = { 
    Key: Date.now()+"", 
    Body: buf, 
    ContentEncoding: 'base64', 
    ContentType: 'image/png', 
    ACL: 'public-read' 
    }; 
    s3Bucket.putObject(data, function(err, data){ 
     if (err) { 
     console.log(err); 
     console.log('Error uploading data: ', data); 
     } else { 
     console.log('succesfully uploaded the image!'); 
     } 
     callback(null,data); 
    }); 
}; 

Antwort

2

Sie können das Bild in S3 als Knotenpuffer hochladen. Das SDK übernimmt die Konvertierung für Sie.

const AWS = require("aws-sdk"); 
var s3 = new AWS.S3(); 

module.exports.handler = (event, context, callback) => { 
    var buf = Buffer.from(event.body.replace(/^data:image\/\w+;base64,/, ""),"base64"); 
    var data = { 
    Bucket: "sample-bucket", 
    Key: Date.now()+"", 
    Body: buf, 
    ContentType: 'image/png', 
    ACL: 'public-read' 
    }; 
    s3.putObject(data, function(err, data){ 
     if (err) { 
     console.log(err); 
     console.log('Error uploading data: ', data); 
     } else { 
     console.log('succesfully uploaded the image!'); 
     } 
     callback(null,data); 
    }); 
}; 
+0

Randbemerkung, mit 's3.upload' erhalten Sie die URL der hochgeladenen Datei,' s3.putObject' nicht –

Verwandte Themen