Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
Error al guardar el archivo enviado a través de WebSockets como ArrayBuffer al sistema de archivos

tengo un código como este

 var reader = new FileReader(); reader.onload = function(){ socket.emit('test', reader.result); }; reader.readAsArrayBuffer(uploadHandler.files[0]);

obtiene el archivo de

 <input type="file" />

y lo "convierte" a ArrayBuffer, luego lo envía a través de WebSockets (Socket.io usado) al servidor Node.js, donde estoy tratando de guardarlo así

 socket.on('test', function(request) { require('fs').writeFileSync('../files/test.png', Buffer.from(request)); });

Pero obtengo TypeError: esta no es una matriz tipeada.

 server > 04-29 12:21:22: <Buffer 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 │ 00 00 01 1e 00 00 00 66 08 06 00 00 00 1d cf fe ce 00 00 0c 13 69 43 43 50 49 43 │ 43 20 50 72 6f 66 69 ... > │ server > TypeError: this is not a typed array. │ server > at Function.from (native) │ server > at Socket.<anonymous> (/home/htdocs/socket/server/server.js:201:65) │ server > at emitOne (events.js:77:13) │ server > at Socket.emit (events.js:169:7) │ server > at /home/htdocs/socket/server/node_modules/socket.io/lib/socket.js:5 │ 03:12 │ server > at nextTickCallbackWith0Args (node.js:419:9) │ server > at process._tickDomainCallback (node.js:389:13)

La versión de Node.js es LTS 6.10.2, por lo que entendí que no necesito hacer Uint8Array desde ArrayBuffer, y solo puedo usar el método Buffer.from, pero el error sigue aquí.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Descubierto, independientemente de cómo envíe su archivo a Socket.io, como ArrayBuffer o File en el lado del servidor, ya viene como un Buffer , por lo que no es necesario llamar a Buffer.from y simplemente puede escribir

 socket.on('test', function(buffer) { require('fs').writeFileSync('../files/test.png', buffer); });

Y funciona :)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda