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

164
Vistas
Lectura de la API de archivo Javascript en el búfer

Estoy interesado en leer desde el archivo a mi propio búfer, para evitar una copia adicional.

Parece que hay una tecnología experimental ReadableStreamBYOBReader . Probé en MS Edge que se espera que sea compatible de acuerdo con la tabla de compatibilidad del navegador , así como con caniuse .

Aquí está el fragmento que esperaba ejecutar en un navegador compatible con la función, ¿puede detectar un error o explicar por qué no funciona?

 console.log(navigator.userAgent) document.querySelector('#input-file').addEventListener('change', async (e) => { if(e.target.files[0]){ try{ // Compare two methods of reading a file const file = e.target.files[0]; const stream = file.stream(); const slice = await file.slice(0, Math.min(file.size, 16)).arrayBuffer() const my_own_array = new Uint8Array(Math.min(file.size, 16)); // Here is where it fails in my browser const reader = stream.getReader({mode:'byob'}) console.log(await reader.read(my_own_array)); slice_array = new Int8Array(slice); // I expect both arrays to have the same data since I read the same file console.log({allEqual: slice_array.every((v, i) => v === my_wn_array[i])}) console.log(my_own_buffer); }catch(e){ console.log(e.toString()) } } })
 Select a file and the script will attempt to load it <input type=file id=input-file>

Lo que veo aquí es

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38` TypeError: Failed to execute 'getReader' on 'ReadableStream': Cannot use a BYOB reader with a non-byte stream

Si funciona en su navegador, por favor, hágamelo saber en los comentarios.

EDITAR : como señaló Xeelley , debería haber pasado {mode:'byob'} en lugar de 'byob' .

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Consulte MDN ReadableStream.getReader() Docs.

getReader acepta 1 parámetro opcional con tipo de object . Entonces, si necesita un lector BYOB, debe pasar la configuración del lector de esta manera:

 file.stream().getReader({ mode: 'byob' })
about 4 years ago · Juan Pablo Isaza 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