in the code below i'm fetching a .txt file and it is getting encoded without giving an error so oi want to use the same thing and also convert an image into basse 64
// adding attachment
function opensavedialog() {
  var nsIFilePicker = Components.interfaces.nsIFilePicker;
  var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
  fp.init(window, "Select a File", nsIFilePicker.modeOpen);
  fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterImages);
  fp.appendFilters(nsIFilePicker.filterText | nsIFilePicker.filterAll);
  var rv = fp.show();
  if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) {
    var file = fp.file;
    var path = "file://" + fp.file.path;
    readTextFile(path);
    document.getElementById('filename').value = file.leafName;
  }
}
// encoding text to base64
function readTextFile(filepath) {
  var rawFile = new XMLHttpRequest();
  rawFile.open("GET", filepath, false);
  rawFile.onreadystatechange = function() {
    if (rawFile.readyState == 4) {
      if (rawFile.status == 200 || rawFile.status == 0) {
        var allText = rawFile.responseText;
        alert(allText);
        encodedata = window.btoa(allText);
      }
    }
  };
  rawFile.send(null);
}
 
    