Upload and download progress for Fetch API.
import { trackRequestProgress } from 'fetch-api-progress';
const blob = new Blob([new Uint8Array(5 * 1024 * 1024)]);
const request = {
headers: {
'Content-Type': 'application/octet-stream'
},
method: 'PUT',
body: blob
};
const trackedRequest = trackRequestProgress(
request,
(progress) => {
console.log(`Uploaded ${progress.loaded} bytes out of ${progress.total ?? 'unknown'}`)
}
);
const response = await fetch("https://httpbin.org/put", trackedRequest);
import { trackResponseProgress } from 'fetch-api-progress';
const response = await fetch("https://httpbin.org/put", {
headers: {
'Content-Type': 'application/octet-stream'
},
method: 'PUT',
body: blob
});
const trackedResponse = trackResponseProgress(
response,
(progress) => {
console.log(`Downloaded ${progress.loaded} bytes out of ${progress.total ?? 'unknown'}`)
}
);
// Read the response. E.G. with a function from https://github.com/teil-one/fetch-api-progress/blob/main/tests/node/response/tracked.test.mjs
await readResponse(trackedResponse);
Tracking progress of | Chrome | Edge | Safari | Firefox | Node.js |
---|---|---|---|---|---|
Request | ✅ | ✅ | ✅ | ❌ | ✅ |
Response | ✅ | ✅ | ✅ | ✅ | ✅ |
Can be used with api-registry – an HTTP API client.