Convert URL to File or Blob for FileReader.readAsDataURL


To convert a URL to a Blob for FileReader.readAsDataURL() do this:

var request = new XMLHttpRequest();'GET', MY_URL, true);
request.responseType = 'blob';
request.onload = function() {
    var reader = new FileReader();
    reader.onload =  function(e){

This information is outdated as of now, but cannot be deleted.

  1. You can create File instances just by specifying a path when your code is chrome-privileged:

    new File("/path/to/file");

    File is a sub-class of Blob, so all File instances are also valid Blobs. Please note that this requires a platform path, and not a file URL.

  2. Yes, FileReader is available to addons.

File and FileReader are available in all windows. If you want to use them in a non-window scope (like bootstrap.js or a code module), you may use nsIDOMFile/nsIDOMFileReader.

Expanding on Felix Turner s response, here is how I would use this approach with the fetch API.

async function createFile(){
  let response = await fetch('');
  let data = await response.blob();
  let metadata = {
    type: 'image/jpeg'
  let file = new File([data], "test.jpg", metadata);
  // ... do something with the file or return it