From c0c13ccc0e2e7b714e519c1890bec9ecbaaaf75e Mon Sep 17 00:00:00 2001 From: Antelle Date: Sat, 3 Oct 2015 22:26:16 +0300 Subject: [PATCH] Workaround for downloading application/octet-stream in Safari --- FileSaver.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/FileSaver.js b/FileSaver.js index 6528152..ed83c3a 100644 --- a/FileSaver.js +++ b/FileSaver.js @@ -94,6 +94,20 @@ var saveAs = saveAs || (function(view) { } // on any filesys errors revert to saving with object URLs , fs_error = function() { + if (target_view && typeof safari !== "undefined" && typeof FileReader !== "undefined") { + // Safari doesn't allow downloading of blob urls + var reader = new FileReader(); + reader.onloadend = function() { + var base64Data = reader.result; + base64Data = base64Data.replace(/^data:.*;/, 'data:attachment/file;'); + target_view.location.href = encodeURI(base64Data); + filesaver.readyState = filesaver.DONE; + dispatch_all(); + }; + reader.readAsDataURL(blob); + filesaver.readyState = filesaver.INIT; + return; + } // don't create more object URLs than needed if (blob_changed || !object_url) { object_url = get_URL().createObjectURL(blob);