Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

222
Views
Cómo obtener la ruta del archivo de imagen emitida desde socket.io desde reaccionar al servidor de nodo/socket

Anteriormente, pude cargar una imagen desde mi aplicación de reacción usando multi-part form en el servidor de nodos usando multer y luego creé una public_url usando cloudinary . Pero ahora, como quería que las cosas fueran en tiempo real, utilicé la biblioteca socket.io , que funciona bien para mensajes de texto simples, pero ahora también quiero incluir mensajes de imagen. Entonces, para eso, estaba tratando de enviar los datos de la imagen desde la aplicación de reacción (usando el selector de imágenes) y los envié al servidor de socket usando socket.emit , recibí:

 imageData: { uri: 'file:///storage/emulated/0/Android/data/com.securechat/files/Pictures/68bb637d-a19b-42e6-b083-e697fb429bf4.jpg', type: 'image/jpeg', name: 'Thu Jan 06 2022 19:19:27 GMT+0530_displayImage' }

Ahora, antes, cuando estaba usando una API de fetch simple, era como:

 const upload = require('../utility/multer'); router.post('/register', upload.single('photoURL'), async (req, res, next) => { const imageResult = await cloudinary.uploader.upload(req.file.path); })

Entonces, ahora estaba obteniendo la URL pública de la imagen enviada, imageResult.public_url , luego guardé esta información en mongodb, fácil.

Pero ahora, como estoy enviando a través del socket, no puedo enviarlo como multi-part form data desde mi aplicación de reacción porque ahora solo estoy emitiendo estos datos como:

Cliente: socket.emit('listener', {imageData: image});

Y este es mi lado del servidor de socket para recibir este imageData :

 socket.on('listener', async data => { const result = upload.single(data.imageData); // ????? // now obviously this won't work because multer to be as a middleware & parsing multipart form data... const imageResult = await cloudinary.uploader.upload(req.file.path); // ????? io.to(id).emit('new_message', data); const message = new Message({ id: generateRandomId(), image: data.imageResult.public_url, // NEED TO CONVERT IT TO STRING OF CLOUDINARY SOMEHOW }); await message.save(); });

Entonces, como puede ver mi problema, ¿hay alguna forma de lograr esto usando multer? Solo necesito una forma de obtener la ruta del archivo y subirlo a cloudinary y finalmente obtener el .public_url para poder guardar el mensaje en mi base de datos

En breve:

Envié datos de imagen del cliente (react-native) como: socket.emit('listener', {imageData: image});

Recibí los siguientes datos en mi servidor de socket:

 imageData: { uri: 'file:///storage/emulated/0/Android/data/com.securechat/files/Pictures/68bb637d-a19b-42e6-b083-e697fb429bf4.jpg', type: 'image/jpeg', name: 'Thu Jan 06 2022 19:19:27 GMT+0530_displayImage' }

Solo necesito una forma de obtener un req.file.path como multer genera cuando se envía como multi-part formData (pero ahora estoy emitiendo usando socket.io), y luego guardarlo en cloudinary para obtener un public_url .

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!