- From: Alfred Morgan <notifications@github.com>
- Date: Mon, 11 Dec 2017 02:56:31 -0800
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Monday, 11 December 2017 10:56:56 UTC
I am trying to stream a selected file using `fetch()` and when the serviceworker fetch handler intercepts the fetch it make the fetch fail. If I don't register the fetch handler then the fetch succeeds. How can I get a file to stream through a fetch while I'm online and using a service worker?
Error:
```
Uncaught (in promise) TypeError: Failed to fetch
PUT https://example.com/upload net::ERR_FAILED
```
HTML:
```html
<input type='file' onchange='upload(event)'>
```
Javascript:
```js
navigator.serviceWorker.register('service.js')
async function upload(event) {
let file = event.target.files[0];
let res = await fetch('upload', {
method: 'PUT',
headers: {
'Content-Type': file.type || 'application/octet-stream'
},
body: file,
mode: 'same-origin',
credentials: 'same-origin'
});
}
```
service.js:
```js
onfetch = event => {event.respondWith(fetchHandler(event))};
async function fetchHandler(event) {
let response = await caches.match(event.request); // 'upload' not in cache
return response || fetch(event.request);
}
```
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/issues/1246
Received on Monday, 11 December 2017 10:56:56 UTC