- From: Jimmy Wärting <notifications@github.com>
- Date: Wed, 11 Dec 2019 01:46:10 -0800
- To: whatwg/fetch <fetch@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/fetch/issues/607/564461907@github.com>
it's already possible to somewhat get a download progress indicator yourself without any new spec changes. but it's not as fancy/ergonomic as if it would be directly implemented to fetch itself
1. get the response (you have now uploaded everything)
2. read the `Content-Length` response header to figure out how large the response is
3. get the `response.body` and `pipeThrough` a transform stream that count bytes that you receive. now you know how much you have downloaded
4. (optionally) you might want to `pipe` it to an other dedicated stream handler like the [TextDecoderStream](https://www.chromestatus.com/feature/4881011259211776) to get a strings back or a custom blob builder or anything, here is an example of just piping it to a new reusable `Response` object so that you can use it as you normally would have
```js
let downloaded = 0
let res = await fetch('./')
console.log('done uploading')
const total = res.headers.get('content-length') // might be null also
// An identity stream (no transformation done)
const ts = new TransformStream({
transform (chunk, ctrl) {
downloaded += chunk.byteLength
console.log(downloaded) // out of `total`
ctrl.enqueue(chunk)
}
})
// create a new Response object /w a new ReadableStream from the transformer
res = new Response(res.body.pipeThrough(ts), res)
// use response as you would normally use
res.text().then(console.log)
```
as for the upload progress it ain't possible yet as Request don't support ReadableStreams yet afaik
if you would like to get a wider browser support then you have to use `getReadable` and do more manually reads as pipes are not well supported in browsers other then Blink (?)
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/fetch/issues/607#issuecomment-564461907
Received on Wednesday, 11 December 2019 09:46:12 UTC