Gestern habe ich eine Deep-Night-Codierungssitzung durchgeführt und eine kleine node.js / JS-App (eigentlich CoffeeScript, aber CoffeeScript ist nur JavaScript, also sagen wir JS) erstellt.
Was ist das Ziel:
- Der Client sendet eine Canvas-Datauri (PNG) an den Server (über socket.io).
- Server lädt Bild auf Amazon S3 hoch
Schritt 1 ist erledigt.
Der Server hat jetzt eine Zeichenfolge a la
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...
Meine Frage ist: Was sind meine nächsten Schritte, um diese Daten auf Amazon S3 zu "streamen" / hochzuladen und dort ein tatsächliches Bild zu erstellen?
knox https://github.com/LearnBoost/knox scheint eine großartige Bibliothek zu sein, um etwas in S3 zu setzen, aber was mir fehlt, ist der Klebstoff zwischen der Base64-codierten Bildzeichenfolge und der tatsächlichen Upload-Aktion ?
Alle Ideen, Hinweise und Rückmeldungen sind willkommen.
javascript
node.js
amazon-s3
coffeescript
Franz Enzenhofer
quelle
quelle
Antworten:
Für Menschen, die immer noch mit diesem Problem zu kämpfen haben. Hier ist der Ansatz, den ich mit nativem aws-sdk verwendet habe.
Innerhalb Ihrer Routermethode: - ContentType sollte auf den Inhaltstyp der Bilddatei festgelegt werden
Die Datei s3_config.json lautet: -
quelle
How to make S3 generates a unique KEY to prevent from overriding files?
undIf I don't set the ContentType, when I download the files I won't be able to get the correct file?
ich meine, ich werde so eine beschädigte Datei bekommen? Danke im Voraus!ContentEncoding: 'base64'
nicht korrekt ist, da dienew Buffer(..., 'base64')
Base64-codierte Zeichenfolge in ihre binäre Darstellung dekodiert wird.ok, dies ist die Antwort, wie Leinwanddaten in einer Datei gespeichert werden
Im Grunde geht es so in meinem Code
quelle
Hier ist der Code aus einem Artikel, auf den ich gestoßen bin und der unten veröffentlicht wurde:
Lesen Sie mehr: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
Credits: https://medium.com/@mayneweb/upload-a-base64-image-data-from-nodejs-to-aws-s3-bucket-6c1bd945420f
quelle
Die akzeptierte Antwort funktioniert hervorragend, aber wenn jemand eine Datei anstelle von nur Bildern akzeptieren muss, funktioniert dieser reguläre Ausdruck hervorragend:
/^data:.+;base64,/
quelle