Skip to content

Commit e54a927

Browse files
author
Philipp Alferov
committed
Update FileSaver.js
1 parent b5fce07 commit e54a927

File tree

4 files changed

+39
-11
lines changed

4 files changed

+39
-11
lines changed

dist/angular-file-saver.bundle.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@
214214
},{}],2:[function(require,module,exports){
215215
/* FileSaver.js
216216
* A saveAs() FileSaver implementation.
217-
* 1.1.20150716
217+
* 1.1.20151003
218218
*
219219
* By Eli Grey, http://eligrey.com
220220
* License: X11/MIT
@@ -244,6 +244,7 @@ var saveAs = saveAs || (function(view) {
244244
var event = new MouseEvent("click");
245245
node.dispatchEvent(event);
246246
}
247+
, is_safari = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent)
247248
, webkit_req_fs = view.webkitRequestFileSystem
248249
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
249250
, throw_outside = function(ex) {
@@ -308,6 +309,19 @@ var saveAs = saveAs || (function(view) {
308309
}
309310
// on any filesys errors revert to saving with object URLs
310311
, fs_error = function() {
312+
if (target_view && is_safari && typeof FileReader !== "undefined") {
313+
// Safari doesn't allow downloading of blob urls
314+
var reader = new FileReader();
315+
reader.onloadend = function() {
316+
var base64Data = reader.result;
317+
target_view.location.href = "data:attachment/file" + base64Data.slice(base64Data.search(/[,;]/));
318+
filesaver.readyState = filesaver.DONE;
319+
dispatch_all();
320+
};
321+
reader.readAsDataURL(blob);
322+
filesaver.readyState = filesaver.INIT;
323+
return;
324+
}
311325
// don't create more object URLs than needed
312326
if (blob_changed || !object_url) {
313327
object_url = get_URL().createObjectURL(blob);
@@ -316,7 +330,7 @@ var saveAs = saveAs || (function(view) {
316330
target_view.location.href = object_url;
317331
} else {
318332
var new_tab = view.open(object_url, "_blank");
319-
if (new_tab == undefined && typeof safari !== "undefined") {
333+
if (new_tab == undefined && is_safari) {
320334
//Apple do not allow window.open, see http://bit.ly/1kZffRI
321335
view.location.href = object_url
322336
}

dist/angular-file-saver.bundle.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/dist/examples.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ angular
244244
},{}],3:[function(require,module,exports){
245245
/* FileSaver.js
246246
* A saveAs() FileSaver implementation.
247-
* 1.1.20150716
247+
* 1.1.20151003
248248
*
249249
* By Eli Grey, http://eligrey.com
250250
* License: X11/MIT
@@ -274,6 +274,7 @@ var saveAs = saveAs || (function(view) {
274274
var event = new MouseEvent("click");
275275
node.dispatchEvent(event);
276276
}
277+
, is_safari = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent)
277278
, webkit_req_fs = view.webkitRequestFileSystem
278279
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
279280
, throw_outside = function(ex) {
@@ -338,6 +339,19 @@ var saveAs = saveAs || (function(view) {
338339
}
339340
// on any filesys errors revert to saving with object URLs
340341
, fs_error = function() {
342+
if (target_view && is_safari && typeof FileReader !== "undefined") {
343+
// Safari doesn't allow downloading of blob urls
344+
var reader = new FileReader();
345+
reader.onloadend = function() {
346+
var base64Data = reader.result;
347+
target_view.location.href = "data:attachment/file" + base64Data.slice(base64Data.search(/[,;]/));
348+
filesaver.readyState = filesaver.DONE;
349+
dispatch_all();
350+
};
351+
reader.readAsDataURL(blob);
352+
filesaver.readyState = filesaver.INIT;
353+
return;
354+
}
341355
// don't create more object URLs than needed
342356
if (blob_changed || !object_url) {
343357
object_url = get_URL().createObjectURL(blob);
@@ -346,7 +360,7 @@ var saveAs = saveAs || (function(view) {
346360
target_view.location.href = object_url;
347361
} else {
348362
var new_tab = view.open(object_url, "_blank");
349-
if (new_tab == undefined && typeof safari !== "undefined") {
363+
if (new_tab == undefined && is_safari) {
350364
//Apple do not allow window.open, see http://bit.ly/1kZffRI
351365
view.location.href = object_url
352366
}

docs/dist/examples.min.js

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)