2013-05-28 8 views
8

Ich habe versucht, eine Datei aus einem Bucket auf Amazon S3 herunterzuladen. Ich habe mich gefragt, ob ich ein Javascript schreiben kann, um eine solche Datei aus einem Eimer zu laden. Ich habe es gegoogelt, konnte aber keine Ressourcen finden, die mir dabei helfen könnten.Javascript zum Herunterladen einer Datei von Amazon S3 Eimer?

Einige Schritte im Hinterkopf sind: Amazon S3 authentifizieren, dann durch Bereitstellung Bucket-Name und Datei (Schlüssel), laden oder lesen Sie die Datei, so dass ich in der Lage sein, die Daten in der Datei anzuzeigen.

Danke,

+0

aber es ist nicht so einfach, weil wir mit den Amazon S3-Anmeldeinformationen umgehen müssen? – c0mrade

+1

Solange der Benutzer "in" ist, wird es gut funktionieren. Cookies halten sie für eine Weile eingeloggt, so dass Sie nicht auf einer S3-HTML-Seite sein müssen, damit der Link funktioniert ... Wenn Sie Authentifizierungshilfe benötigen, ist das wirklich eine andere Frage, aber Sie müssen sie vor Ihnen beantworten kann den Download mit Javascript robotisieren. – dandavis

Antwort

16

Vielleicht können Sie AWS Node.js API verwenden:

var AWS = require('aws-sdk'); 
AWS.config.update(
    { 
    accessKeyId: ".. your key ..", 
    secretAccessKey: ".. your secret key ..", 
    } 
); 
var s3 = new AWS.S3(); 
s3.getObject(
    { Bucket: "my-bucket", Key: "my-picture.jpg" }, 
    function (error, data) { 
    if (error != null) { 
     alert("Failed to retrieve an object: " + error); 
    } else { 
     alert("Loaded " + data.ContentLength + " bytes"); 
     // do something with data.Body 
    } 
    } 
); 
+0

Danke! Ich denke, dass AWS Node.js genau das ist, wonach ich suche. – c0mrade

+2

Hier ist der direkte Link zu [s3.getObject] (http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property) in AWS Node.js API für die Interessierten. –

+0

Für alle, die wissen wollen, 'data.Body' ist die RAW-Datei und kann in anderen Modulen wie graphicsmagick verwendet werden:' g (data.Body) .identify (function (err, value) {}); ' Ziemlich cool! –