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, así que digamos JS).
cual es el objetivo:
- el cliente envía un datauri de lienzo (png) al servidor (a través de socket.io)
- el servidor carga la imagen en 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" / cargar estos datos en Amazon S3 y crear una imagen real allí?
knox https://github.com/LearnBoost/knox parece una biblioteca increíble para PONER algo a S3, pero lo que me falta es el pegamento entre la cadena de imagen codificada en base64 y la acción de carga real .
Todas las ideas, sugerencias y comentarios son bienvenidos.
javascript
node.js
amazon-s3
coffeescript
Franz Enzenhofer
fuente
fuente
Respuestas:
Para las personas que todavía luchan con este problema. Este es el enfoque que utilicé con aws-sdk nativo.
dentro de su método de enrutador: - ContentType debe establecerse en el tipo de contenido del archivo de imagen
El archivo s3_config.json es: -
fuente
How to make S3 generates a unique KEY to prevent from overriding files?
yIf I don't set the ContentType, when I download the files I won't be able to get the correct file?
quiero decir, ¿obtendré un archivo tan dañado? ¡Gracias por adelantado!ContentEncoding: 'base64'
no es correcto porquenew Buffer(..., 'base64')
decodifica una cadena codificada en base64 en su representación binaria.ok, esta es la respuesta a cómo guardar datos de lienzo en un archivo
básicamente se pierde así en mi código
fuente
Aquí está el código de un artículo que encontré, que publiqué a continuación:
Leer más: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#upload-property
Créditos: https://medium.com/@mayneweb/upload-a-base64-image-data-from-nodejs-to-aws-s3-bucket-6c1bd945420f
fuente
La respuesta aceptada funciona muy bien, pero si alguien necesita aceptar cualquier archivo en lugar de solo imágenes, esta expresión regular funciona muy bien:
/^data:.+;base64,/
fuente