react nodejs node listobjects example aws javascript node.js amazon-s3 coffeescript

javascript - nodejs - Carga de la imagen codificada en base64 en Amazon S3 a través de Node.js



nodejs s3 upload (2)

Para las personas que todavía están luchando con este problema. Este es el enfoque que utilicé con aws-sdk nativo.

var AWS = require(''aws-sdk''); AWS.config.loadFromPath(''./s3_config.json''); var s3Bucket = new AWS.S3( { params: {Bucket: ''myBucket''} } );

dentro de su método de enrutador: - ContentType debe establecerse en el tipo de contenido del archivo de imagen

buf = new Buffer(req.body.imageBinary.replace(/^data:image///w+;base64,/, ""),''base64'') var data = { Key: req.body.userId, Body: buf, ContentEncoding: ''base64'', ContentType: ''image/jpeg'' }; s3Bucket.putObject(data, function(err, data){ if (err) { console.log(err); console.log(''Error uploading data: '', data); } else { console.log(''succesfully uploaded the image!''); } });

El archivo s3_config.json es: -

{ "accessKeyId":"xxxxxxxxxxxxxxxx", "secretAccessKey":"xxxxxxxxxxxxxx", "region":"us-east-1" }

Ayer hice una sesión de codificación nocturna profunda y creé una pequeña aplicación node.js / JS (bueno, en realidad, CoffeeScript, pero CoffeeScript es solo JavaScript, digamos JS).

cual es el objetivo

  1. el cliente envía un canvas datauri (png) al servidor (a través de socket.io)
  2. el servidor carga la imagen a amazon s3

el paso 1 está hecho.

el servidor ahora tiene una cadena a la

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACt...

mi pregunta es: ¿cuáles son mis próximos pasos para "transmitir" / subir estos datos a Amazon S3 y crear una imagen real allí?

knox https://github.com/LearnBoost/knox parece una increíble lib para PONER algo en S3, pero lo que me falta es el pegamento entre la cadena de imagen codificada en base64 y la acción de carga real .

Cualquier idea, consejos y comentarios son bienvenidos.


ok, esta es la respuesta de cómo guardar datos de lienzo en un archivo

Básicamente se pierde así en mi código

buf = new Buffer(data.dataurl.replace(/^data:image///w+;base64,/, ""),''base64'') req = knoxClient.put(''/images/''+filename, { ''Content-Length'': buf.length, ''Content-Type'':''image/png'' }) req.on(''response'', (res) -> if res.statusCode is 200 console.log(''saved to %s'', req.url) socket.emit(''upload success'', imgurl: req.url) else console.log(''error %d'', req.statusCode) ) req.end(buf)