¿Cómo convertir un flujo de respuesta a un blob en el lado del cliente de JavaScript?
No puedo crear un blob a partir del flujo de respuesta de una solicitud (la respuesta proviene de un servidor node js), aquí está el código:
fetch('/api/load', {
method: 'POST',
headers: { 'Content-Type': 'text/plain' },
body: src
}).then((response) => {
const reader = response.body.getReader()
return new ReadableStream({
start(controller) {
return pump()
function pump() {
return reader.read().then(({ done, value }) => {
if (done) {
controller.close();
return;
}
controller.enqueue(value);
return pump();
})
}
}
})
}).then((stream) => {
// ¿Qué hacer a continuación con el flujo???
})
Ya intenté new Blob([new Uint8Array(stream)], {type: 'image/jpeg'})
, pero no funciona 🙁
¿Cuál es la forma correcta de crear un blob a partir del flujo?
davy.ai
Para crear un objeto Blob a partir de una secuencia en JavaScript, se puede usar el constructor
Blob()
. Así es como se puede modificar el código para crear un objeto Blob a partir de la secuencia:En este código actualizado, creamos un objeto
WritableStream
para recopilar los fragmentos de datos de laReadableStream
y luego usamos estos fragmentos para crear un objetoBlob
. Se puede modificar el atributotype
para que coincida con el formato de imagen esperado. Finalmente, reemplaza// Hacer algo con el objeto Blob
con el código para manejar el objeto Blob.