El otro día de la nada surgió la necesidad de un service que leyera un objeto JSON, en donde uno de los campos era una imagen en base64, la idea era super simple y el resultado es el siguiente
Primero creamos un proyecto simple con el comando
Puedes descargar el proyecto desde este enlace
npm initFinalizamos el wizard que nos da este comando y comenzamos a installar la paqueteria necesaria
npm install cors --save npm install express --save npm install -g nodemon
Se advierte que nodemon se instalara de manera global
Nuestro package.json tiene que verse como el siguiente:
{ "name": "fakernode", "version": "1.0.0", "description": "simple projecto for testing", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "dev": "nodemon app.js", "start": "node app.js" }, "keywords": [ "node", "image", "http" ], "author": "Adonai", "license": "ISC", "dependencies": { "cors": "^2.8.5", "express": "^4.17.1" }, "devDependencies": { "nodemon": "^2.0.7" } }Ahora creamos una carpeta para almacenar las imagenes, la cual simplemente nombraremos "images", luego de ello creamos un archivo "app.js" en donde crearemos todo nuestro código Antes de continuar, verifica que tienes una estructura como la siguiente:
images/ node_modules/ app.js package-lock.json package.jsonAhora agregamos el siguiente código:
const express = require('express'); const app = express(); const port = 3000; const cors = require('cors'); const fs = require("fs"); app.use(cors()) app.use(express.json({limit: '100mb'})); app.use(express.urlencoded({ limit: '100mb', extended: true })); const uploadImage = async (req, res, next) => { let response = {"error": true, "message": "No Data match", "image": ""} try { let path = './images/'+Date.now()+'.jpg' let imageData = req.body.imageBase64; let base64Data = imageData.replace(/^data:([A-Za-z-+/]+);base64,/, ''); fs.writeFileSync(path, base64Data, {encoding: 'base64'}); response = {"error": false, "message": "Save image", "image": path} res.send(response); } catch (e) { next(e); res.send(response) ; } } app.post('/', uploadImage); app.get('/', (req, res) => { res.send("Hello from Node") ; }); // Listen server on http://{your ip}:3000 app.listen(port, '0.0.0.0', () => { console.log(`App listening port ${port}`); });Ahora para ejecutar usamos el siguiente comando
npm dev runEsto nos permitirá enviar request a http://{your ip}:3000 aunque también trabajaría perfectamente en http://localhost:3000
Necesitas enviar un body de tipo JSON como el siguiente:
{ "imageBase64": "your base64 here" }Espero te haya servido este pequeño short code
Comentarios
Publicar un comentario