Angular File Saver is an AngularJS service that leverages FileSaver.js and Blob.js to implement the HTML5 W3C saveAs() interface in browsers that do not natively support it
File dist/angular-file-saver.bundle.js
contains all required dependencies and grants access to both Blob.js
and FileSaver.js
polyfills via Blob
and SaveAs
services.
# Using bower: $ bower install angular-file-saver # Using npm: $ npm install angular-file-saver
- Include
ngFileSaver
module into your project; - Pass both
FileSaver
andBlob
services as dependencies; - Create a Blob object by passing an array with data as the first argument and an object with set of options as the second one:
new Blob(['text'], { type: 'text/plain;charset=utf-8' })
; - Invoke
FileSaver.saveAs
with the following arguments:data
Blob: a Blob instance;filename
String: a custom filename (an extension is optional);disableAutoBOM
Boolean: (optional) Disable automatically provided Unicode text encoding hints;
A core Angular factory.
Immediately starts saving a file
- Blob
data
: a Blob instance; - String
filename
: a custom filename (an extension is optional); - Boolean
disableAutoBOM
: (optional) Disable automatically provided Unicode text encoding hints;
An Angular factory that returns a Blob instance.
An Angular factory that returns a FileSaver.js polyfill.
JS
function ExampleCtrl(FileSaver, Blob) { var vm = this; vm.val = { text: 'Hey ho lets go!' }; vm.download = function(text) { var data = new Blob([text], { type: 'text/plain;charset=utf-8' }); FileSaver.saveAs(data, 'text.txt'); }; } angular .module('fileSaverExample', ['ngFileSaver']) .controller('ExampleCtrl', ['FileSaver', 'Blob', ExampleCtrl]);
HTML
<div class="wrapper" ng-controller="ExampleCtrl as vm"> <textarea ng-model="vm.val.text" name="textarea" rows="5" cols="20"> Hey ho let's go! </textarea> <a href="" class="btn btn-dark btn-small" ng-click="vm.download(vm.val.text)"> Download </a> </div>
MIT © Philipp Alferov