Speichern eines Bildes auf s3 mit node.js gespeichert?

8

Ich versuche, einen Image-Server zu schreiben, der node.js verwendet, um Bilder auf s3 zu speichern. Das Hochladen des Bildes funktioniert gut, und ich kann es mit einem s3 Browser Client herunterladen und anzeigen (ich benutze insbesondere Dragondisk, aber ich habe es erfolgreich auch mit anderen heruntergeladen), aber wenn ich es mit Knoten herunterlade und es versuche um es auf die Festplatte zu schreiben, kann ich die Datei nicht öffnen (sie besagt, dass sie beschädigt sein könnte oder ein Dateiformat verwendet, das von der Vorschau nicht erkannt wird). Ich benutze den Amazon Sdk für Knoten und fs, um die Datei zu schreiben. Ich weiß, dass Sie eine optionale Codierung an fs.writeFile übergeben können, aber ich habe sie alle ausprobiert und es funktioniert nicht. Ich habe auch versucht, ContentType auf putObject und ResponseContentType auf getObject sowie ContentEncoding und ResponseContentEncoding (und all diese Dinge in verschiedenen Kombinationen) zu setzen. Gleiches Ergebnis. Hier ist ein Code:

%Vor%

Übrigens benutze ich express für das Routing, daher kommt hier req.params her.

    
tandrewnichols 20.12.2012, 19:59
quelle

2 Antworten

5

Ok, nach langem Ausprobieren habe ich herausgefunden, wie das geht. Ich wechselte zu knox, aber vermutlich könnte man eine ähnliche Strategie mit aws-sdk verwenden. Das ist die Art von Lösung, die mich dazu bringt zu sagen: "Es muss einen besseren Weg geben als das", aber ich bin mit allem zufrieden, was an diesem Punkt funktioniert.

%Vor%

getFile() gibt Datenblöcke als Puffer zurück. Man könnte meinen, man könnte die Ergebnisse direkt an das Front-End leiten, aber aus irgendeinem Grund war dies der EINZIGE Weg, wie ich den Service dazu bringen konnte, ein Bild korrekt zurückzugeben. Es fühlt sich überflüssig an, einen Puffer in einen binären String zu schreiben, nur um ihn in einen Puffer zu schreiben, aber hey, wenn es funktioniert, funktioniert es. Wenn jemand eine effizientere Lösung findet, würde ich es gerne hören.

    
tandrewnichols 03.01.2013, 20:08
quelle
10

Für Leute, die immer noch mit diesem Problem kämpfen. Hier ist der Ansatz, den ich mit nativem aws-sdk verwendet habe.

%Vor%

innerhalb Ihrer Router-Methode: - ContentType sollte auf den Inhaltstyp der Bilddatei festgelegt werden

%Vor%

s3_config.json Datei ist: -

%Vor%     
Divyanshu 30.09.2014 02:02
quelle

Tags und Links