export class FileService { static $inject = ['$q']; constructor(private $q: ng.IQService) { } getContentFromBlobAsBinaryString(blob: Blob): ng.IPromise { let deferred = this.$q.defer(); if (!FileReader.prototype.readAsBinaryString) { FileReader.prototype.readAsBinaryString = function (fileData) { var binary = ""; var pt = this; var reader = new FileReader(); reader.onload = function (e) { var bytes = new Uint8Array(reader.result); var length = bytes.byteLength; for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); } pt.content = binary; $(pt).trigger('onload'); }; reader.readAsArrayBuffer(fileData); }; } let fileReader = new FileReader(); fileReader.onload = function (e: any) { let data = (!e) ? (this).content : e.target.result; deferred.resolve(data); }; fileReader.onerror = function (error) { deferred.reject(error); }; fileReader.readAsBinaryString(blob); return deferred.promise; } }