Laden Sie mithilfe von AWS SDK für Node.js eine Binärdatei in S3 hoch
Update: Für die Zukunft, Amazon haben nun aktualisiert, die Dokumentation von dem, was war es an der Zeit zu Fragen. Als pro @Loren Segal ' s Kommentar unten:-
Haben wir korrigiert die docs in der neuesten preview-Version zu dokumentieren, diese parameter richtig. Sorry für die Verwechslung!
Ich versuche die Entwickler-Vorschau von das AWS SDK für Node.Js und hochladen möchten, eine gezippte tarball S3 mit putObject
.
Laut die Dokumentationdie Body
parameter werden sollte...
Körper - (Base64-Codierte Daten)
...also, ich versuche den folgenden code...
var AWS = require('aws-sdk'),
fs = require('fs');
//For dev purposes only
AWS.config.update({ accessKeyId: 'key', secretAccessKey: 'secret' });
//Read in the file, convert it to base64, store to S3
fs.readFile('myarchive.tgz', function (err, data) {
if (err) { throw err; }
var base64data = new Buffer(data, 'binary').toString('base64');
var s3 = new AWS.S3();
s3.client.putObject({
Bucket: 'mybucketname',
Key: 'myarchive.tgz',
Body: base64data
}).done(function (resp) {
console.log('Successfully uploaded package.');
});
});
Zwar sehe ich dann die Datei in S3, wenn ich laden Sie es und versuchen, um Sie zu entpacken bekomme ich eine Fehlermeldung, dass die Datei beschädigt ist. Es scheint daher, dass meine Methode für 'base64-kodierten Daten" ausgeschaltet ist.
Kann mir bitte jemand helfen, laden Sie eine Binärdatei mit putObject
?
InformationsquelleAutor der Frage isNaN1247 | 2012-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nicht zu konvertieren, den Puffer in einen base64-string. Setzen Sie einfach Körper zu Daten und es wird funktionieren.
InformationsquelleAutor der Antwort AndyD
Hier ist ein Weg, um eine Datei zu senden mit Bächen, die notwendig sein könnte, für große Dateien und wird in der Regel reduzieren Speicher-overhead:
InformationsquelleAutor der Antwort CaptEmulation
Konnte ich meine Dateien hochladen die binäre Datei auf diese Weise.
InformationsquelleAutor der Antwort shaun