How to get a file or blob from an object URL? How to get a file or blob from an object URL? javascript javascript

How to get a file or blob from an object URL?


Modern solution:

let blob = await fetch(url).then(r => r.blob());

The url can be an object url or a normal url.


As gengkev alludes to in his comment above, it looks like the best/only way to do this is with an async xhr2 call:

var xhr = new XMLHttpRequest();xhr.open('GET', 'blob:http%3A//your.blob.url.here', true);xhr.responseType = 'blob';xhr.onload = function(e) {  if (this.status == 200) {    var myBlob = this.response;    // myBlob is now the blob that the object URL pointed to.  }};xhr.send();

Update (2018): For situations where ES5 can safely be used, Joe has a simpler ES5-based answer below.


Maybe someone finds this useful when working with React/Node/Axios. I used this for my Cloudinary image upload feature with react-dropzone on the UI.

    axios({        method: 'get',        url: file[0].preview, // blob url eg. blob:http://127.0.0.1:8000/e89c5d87-a634-4540-974c-30dc476825cc        responseType: 'blob'    }).then(function(response){         var reader = new FileReader();         reader.readAsDataURL(response.data);          reader.onloadend = function() {             var base64data = reader.result;             self.props.onMainImageDrop(base64data)         }    })