window.navigator.msSaveBlob
を見てあげる。
あったらIE11?
var file_data_uint8 = new Uint8Array(file_data);
var blob = new Blob([file_data_uint8.buffer], { type: "application/zip" });
var url = window.URL.createObjectURL(blob);
var a = $('<a>').attr({href:url, download:name}).text(name);
aタグとURL作成したところIE11が反応しないので下記追加してあげる
a.click(function(){
if(window.navigator.msSaveBlob){
console.log('IE11?');
window.navigator.msSaveBlob(blob, name);
}
}
おまけ file_dataデータがbase64の場合の変換
// base64 -> url || blob
function base642url(base64, opt){
opt = opt ? opt : {type:'url'};
var type = base64.match(/^data:(.*);base64,/, function(){return RegExp.$1;})[1];
var bin = atob(base64.replace(/^.*,/, ''));
var ary = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) {
ary[i] = bin.charCodeAt(i);
}
var blob = new Blob([ary.buffer], {type:type});
var url = window.URL.createObjectURL(blob);
if(opt.type == 'blob') return blob;
return url;
}