Tengo un problema extraño al agregar un blob a FormData. De acuerdo con los documentos ( https://developer.mozilla.org/en-US/docs/Web/API/FormData/append ), la función de agregar puede ser una cadena o un blob. Mi código es como tal:
const blobFromSync = (...args) => import('node-fetch').then(({ blobFromSync }) => blobFromSync(...args)); let file_location = '/path/to/video/file.mp4'; const file = await blobFromSync(file_location); const chunkSize = 40000; for (let start = 0; start < file.size; start += chunkSize) { const chunk = file.slice(start, start + chunkSize + 1) const form = new FormData(); form.append('file', chunk, 'an-id'); }El registro del fragmento en la consola muestra un blob, pero arroja este error:
TypeError: source.on is not a function at DelayedStream.create (/Users/xxxxxxxxx/Development/terminal-backend/node_modules/delayed-stream/lib/delayed_stream.js:33:10) at CombinedStream.append (/Users/xxxxxxx/Development/terminal-backend/node_modules/combined-stream/lib/combined_stream.js:45:37) at FormData.append (/Users/xxxxxxxxx/Development/terminal-backend/node_modules/form-data/lib/form_data.js:75:3) at /Users/xxxxxxxxxn/Development/terminal-backend/src/server.js:90:18¿Qué estoy pasando por alto aquí?
La documentación oficial en MDN está relacionada con los estándares de la API de WHATWG FormData, que dice que form.append acepta Blob como segundo argumento. Tenga en cuenta que es solo una especificación (no una implementación).
La implementación que está utilizando no es compatible con Blob , como se destaca en este problema . Como también se menciona en el doc .
Sin embargo, puede crear un Buffer a partir de su Blob usando Buffer.from(<blob>) y debería funcionar.
PD : Créditos a @Kaiido por señalar la especificación WHATWG y encontrar el problema de github.