¿Cómo crear y save un file en el sistema de files local usando AngularJS?

Quiero crear y save el file antes de registrar datos en él. El siguiente método es crear y save datos en un file y solo es compatible con el browser Chrome. ¿Cómo puedo crear y save un file en blanco y luego registrar datos en él y tengo soporte para IE y Chrome?

ctrl.js:

function download(text, name, type) { var a = document.getElementById("a"); var file = new Blob([text], {type: type}); a.href = URL.createObjectURL(file); a.download = name; } $scope.recordLogs = function(){ download('file text', 'myfilename.txt', 'text/plain') } 

Guardar en el sistema de files

Eche un vistazo a angular-file-saver

O use el siguiente código como reference para save un BLOB. Donde el object blob se genera a partir de un object JSON . Pero la extracción a un file TEXT también es posible.

  // export page definition to json file $scope.exportToFile = function(){ var filename = 'filename' var blob = new Blob([angular.toJson(object, true)], {type: 'text/plain'}); if (window.navigator && window.navigator.msSaveOrOpenBlob) { window.navigator.msSaveOrOpenBlob(blob, filename); } else{ var e = document.createEvent('MouseEvents'), a = document.createElement('a'); a.download = filename; a.href = window.URL.createObjectURL(blob); a.dataset.downloadurl = ['text/json', a.download, a.href].join(':'); e.initEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); a.dispatchEvent(e); // window.URL.revokeObjectURL(url); // clean the url.createObjectURL resource } } 

Usando LocalStorage

Guardando en localStorage:

 window.localStorage.setItem('key', value); 

Cómo llegar desde LocalStorage

 window.localStorage.getItem('key'); 

Eliminar key de localStorage

 window.localStorage.removeItem('key'); 

O usando el module AngularJS 'ngStorage'

Compatibilidad del browser

 Chrome - 4 Firefox (Gecko) - 3.5 Internet Explorer - 8 Opera - 10.50 Safari (WebKit) - 4 

Ver ejemplo en vivo (créditos a @cOlz)

https://codepen.io/gMohrin/pen/YZqgQW

 $http({ method : 'GET', url : $scope.BASEURL + 'file-download?fileType='+$scope.selectedFile, responseType: 'arraybuffer', headers : { 'Content-Type' : 'application/json' } }).success(function(data, status, headers, config) { // TODO when WS success var file = new Blob([ data ], { type : 'application/json' }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement('a'); a.href = fileURL; a.target = '_blank'; a.download = $scope.selectedFile+'.json'; document.body.appendChild(a); a.click(); }).error(function(data, status, headers, config) { }); 

En la parte de éxito necesita abrir el sistema local, por el cual el usuario puede elegir, dónde save el file. Aquí he usado <a> . Y estoy golpeando un service tranquilo