Carga confirmada
Envía fragmentos secuenciales con Fetch. Este ejemplo del mismo sitio usa el envelope predeterminado y un Blob generado de 1 MiB, no un archivo personal.
import { Http, ContentType, uploadConfirmed, type HttpUploadChunkReceipt } from "fetchzen";const api = Http.create(`${location.origin}/api/examples/`, { cache: false, secure: false,});const body = new Blob([new Uint8Array(1024 * 1024)]);const result = await uploadConfirmed(body, { sendChunk: async (chunk, { signal }) => (await api.post<Blob, HttpUploadChunkReceipt>("upload-chunk/", chunk, { type: ContentType.APPLICATION_OCTET_STREAM, signal, retry: 0, })).payload, onUploadProgress: (progress) => console.log(progress),});console.log(result);Listo. No se ha enviado ninguna solicitud.
Resultado
Elige Ejecutar para ver la respuesta.
Registro de eventos
Todavía no hay eventos.
Qué observar
Sección titulada «Qué observar»Cada POST /api/examples/upload-chunk/ lee como máximo 256 KiB del cuerpo binario
real antes de devolver { data: { receivedBytes, stored: false } }. El demo
cuenta y descarta bytes; no ensambla ni almacena archivos. El progreso empieza en
0% y solo avanza con recibos exactos, no al entregar bytes a Fetch.
done: true significa recibos de bytes, no almacenamiento ni procesamiento.
El demo limita los archivos generados a 1 MiB. No hay persistencia ni reanudación. Usa datos sintéticos: las solicitudes pasan por Cloudflare. Fragmentos pequeños implican más solicitudes HTTP. Un endpoint de archivos completos requiere cambios del servidor para usar esta convención.
Continúa con producción y cancelación o carga directa de archivos.