| 
13 | 13 | 
 
  | 
14 | 14 |   angular  | 
15 | 15 |     .module('fileSaver', [])  | 
16 |  | -    .factory('SaveAs', [SaveAs]);  | 
 | 16 | +    .factory('SaveAs', SaveAs);  | 
17 | 17 | 
 
  | 
18 | 18 |     function SaveAs() {  | 
19 |  | -      function blobInit(data, type) {  | 
20 |  | -        var blob;  | 
21 |  | - | 
22 |  | -        if (hasBlobSupport()) {  | 
23 |  | -          return new Blob(data, type);  | 
24 |  | -        }  | 
25 |  | - | 
26 |  | -        blob = new BlobBuilder();  | 
27 |  | -        blob.append(data[0]);  | 
28 |  | -        blob = getBlob(type.type);  | 
29 |  | - | 
30 |  | -        return blob;  | 
31 |  | -      }  | 
32 | 19 | 
 
  | 
33 | 20 |       function isBlobInstance (data) {  | 
34 |  | -          return data instanceof Blob || data instanceof BlobBuilder;  | 
 | 21 | +        return data instanceof Blob;  | 
35 | 22 |       }  | 
36 | 23 | 
 
  | 
37 |  | -      function hasBlobSupport() {  | 
38 |  | -        return typeof(Blob) === "function";  | 
 | 24 | +      function save(blob, filename) {  | 
 | 25 | +        try {  | 
 | 26 | +          saveAs(blob, filename);  | 
 | 27 | +        } catch(err) {  | 
 | 28 | +          console.error(err.message);  | 
 | 29 | +        }  | 
39 | 30 |       }  | 
40 | 31 | 
 
  | 
41 | 32 |       return {  | 
42 | 33 | 
 
  | 
43 | 34 |         /**  | 
44 | 35 |         * saveFile - Immediately starts saving a file, returns undefined.  | 
45 | 36 |         *  | 
46 |  | -        * @param  {string|array|object} data Data, represented as a string,  | 
47 |  | -        * an array or a Blob object;  | 
 | 37 | +        * @param  {array|Blob} data Represented as an array or a Blob object  | 
48 | 38 |         * @param  {string} filename  | 
49 |  | -        * @param  {object} options Set of options for the Blob constructor.  | 
 | 39 | +        * @param  {object} options Set of Blob constructor options.  | 
50 | 40 |         * Optional parameter, if Blob object is passed as first argument  | 
51 | 41 |         * @return {undefined}  | 
52 | 42 |         */  | 
53 | 43 | 
 
  | 
54 |  | -        saveFile: function (data, filename, options) {  | 
 | 44 | +        download: function (data, filename, options) {  | 
55 | 45 |           var blob;  | 
56 |  | -          options = (typeof options === 'undefined') ? {} : options;  | 
 | 46 | +          data = data instanceof Array ? data : [data];  | 
57 | 47 | 
 
  | 
58 | 48 |           if (isBlobInstance(data)) {  | 
59 |  | -            return saveAs(data, filename);  | 
 | 49 | +            save(data, filename);  | 
60 | 50 |           }  | 
61 | 51 | 
 
  | 
62 |  | -          data = data instanceof Array ? data : [data];  | 
63 |  | - | 
64 |  | -          blob = blobInit(data, options);  | 
65 |  | - | 
66 |  | -          return saveAs(blob, filename);  | 
 | 52 | +          blob = new Blob(data, options);  | 
 | 53 | +          save(blob, filename);  | 
67 | 54 |         }  | 
68 |  | - | 
69 | 55 |       };  | 
70 | 56 |     }  | 
71 | 57 | 
 
  | 
 | 
0 commit comments