iking-utils-pro
Version:
金合前端工具库
2 lines (1 loc) • 7.94 kB
JavaScript
;function e(e){const o=e.split(","),t=o[0].match(/:(.*?);/)[1],n=atob(o[1]);let r=n.length;const i=new Uint8Array(r);for(;r--;)i[r]=n.charCodeAt(r);return new Blob([i],{type:t})}function o(e,o){return new Promise(((t,n)=>{let r=document.createElement("CANVAS");const i=r.getContext("2d"),d=new Image;d.crossOrigin="",d.onload=function(){if(!r||!i)return n();r.height=d.height,r.width=d.width,i.drawImage(d,0,0);const e=r.toDataURL(o||"image/png");r=null,t(e)},d.src=e}))}function t(o,t,r,i){n(e(o),t,r,i)}function n(e,o,t,n){const r=new Blob(void 0!==n?[n,e]:[e],{type:t||"application/octet-stream"}),i=window.URL.createObjectURL(r),d=document.createElement("a");d.style.display="none",d.href=i,d.setAttribute("download",o),void 0===d.download&&d.setAttribute("target","_blank"),document.body.appendChild(d),d.click(),document.body.removeChild(d),window.URL.revokeObjectURL(i)}Object.defineProperty(exports,"__esModule",{value:!0});let r="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof globalThis&&globalThis.globalThis===globalThis?globalThis:void 0;function i(e,o,t){const n=new XMLHttpRequest;n.open("GET",e),n.responseType="blob",n.onload=function(){l(n.response,o,t)},n.onerror=function(){console.error("could not download file")},n.send()}function d(e){const o=new XMLHttpRequest;o.open("HEAD",e,!1);try{o.send()}catch(e){}return o.status>=200&&o.status<=299}function s(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(o){const t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}const a=r?.navigator&&/Macintosh/.test(navigator?.userAgent)&&/AppleWebKit/.test(navigator?.userAgent)&&!/Safari/.test(navigator?.userAgent),l=(e,o,t,n)=>{if("download"in HTMLAnchorElement.prototype&&!a){const n=r.URL||r.webkitURL,a=document.createElementNS("http://www.w3.org/1999/xhtml","a");o=o||e?.name||"download",a.download=o,a.rel="noopener","string"==typeof e?(a.href=e,a.origin!==location.origin?d(a.href)?i(e,o,t):(a.target="_blank")&&s(a):s(a)):(a.href=n.createObjectURL(e),setTimeout((function(){n.revokeObjectURL(a.href)}),4e4),setTimeout((function(){s(a)}),0))}else if(navigator?.msSaveOrOpenBlob)if(o=o||e.name||"download","string"==typeof e)if(d(e))i(e,o,t);else{var l=document.createElement("a");l.href=e,l.target="_blank",setTimeout((function(){s(l)}))}else navigator?.msSaveOrOpenBlob(function(e,o){return void 0===o?o={autoBom:!1}:"object"!=typeof o&&(console.warn("第二个参数类型必须是object"),o={autoBom:!o}),o.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e?.type)?new Blob([String.fromCharCode(65279),e],{type:e?.type}):e}(e,t),o);else{if((n=n||open("","_blank"))&&(n.document.title=n.document.body.innerText="downloading..."),"string"==typeof e)return i(e,o,t);const d="application/octet-stream"===e.type,s=/constructor/i.test(r.HTMLElement)||r.safari,l=/CriOS\/[\d]+/.test(navigator?.userAgent);if((l||d&&s||a)&&"undefined"!=typeof FileReader){const o=new FileReader;o.onloadend=function(){let e=o.result;e=l?e:e?.replace(/^data:[^;]*;/,"data:attachment/file;"),n?n.location.href=e:location.href=e,n=null},o.readAsDataURL(e)}else{const o=r.URL||r.webkitURL,t=o.createObjectURL(e);n?n.location=t:location.href=t,n=null,setTimeout((function(){o.revokeObjectURL(t)}),4e4)}}},c={".doc":"word",".docx":"word",".docxf":"word",".docm":"word",".dot":"word",".dotm":"word",".dotx":"word",".epub":"word",".fodt":"word",".htm":"word",".html":"word",".mht":"word",".odt":"word",".ott":"word",".rtf":"word",".djvu":"word",".oxps":"word",".oform":"word",".fb2":"word",".xml":"word",".xps":"word",".csv":"excel",".xls":"excel",".xlsx":"excel",".fods":"excel",".ods":"excel",".ots":"excel",".xlsb":"excel",".xlsm":"excel",".xlt":"excel",".xltm":"excel",".xltx":"excel",".fodp":"ppt",".odp":"ppt",".otp":"ppt",".pot":"ppt",".potm":"ppt",".potx":"ppt",".pps":"ppt",".ppsm":"ppt",".ppsx":"ppt",".ppt":"ppt",".pptm":"ppt",".pptx":"ppt",".zip":"zip",".rar":"zip",".7z":"zip",".apz":"zip",".ar":"zip",".bz":"zip",".car":"zip",".dar":"zip",".cpgz":"zip",".f":"zip",".ha":"zip",".hbc":"zip",".hbc2":"zip",".hbe":"zip",".hpk":"zip",".hyp":"zip",".png":"image",".jpg":"image",".jpeg":"image",".bmp":"image",".gif":"image",".webp":"image",".psd":"image",".svg":"image",".tiff":"image",".avi":"video",".wmv":"video",".mpeg":"video",".mp4":"video",".mpm4v":"video",".mov":"video",".asf":"video",".flv":"video",".f4v":"video",".rmvb":"video",".rm":"video",".3gp":"video",".vob":"video",".txt":"txt",".pdf":"pdf"},p=e=>{const o=e?.toLocaleLowerCase(),t=o?.startsWith(".")?o:`.${o}`;return t&&c[t]||"unknow"};exports.base64ToBlob=e,exports.downloadByBase64=t,exports.downloadByData=n,exports.downloadByOnlineUrl=function(e,n,r,i){o(e).then((e=>{t(e,n,r,i)}))},exports.downloadByUrl=function({url:e,target:o="_blank",fileName:t}){if(window?.navigator){const n=window.navigator.userAgent.toLowerCase().indexOf("chrome")>-1,r=window.navigator.userAgent.toLowerCase().indexOf("safari")>-1;if(/(iP)/g.test(window.navigator.userAgent))return console.error("Your browser does not support download!"),!1;if(n||r){const n=document.createElement("a");if(n.href=e,n.target=o,void 0!==n.download&&(n.download=t||e.substring(e.lastIndexOf("/")+1,e.length)),document.createEvent){const e=document.createEvent("MouseEvents");return e.initEvent("click",!0,!0),n.dispatchEvent(e),!0}}return-1===e.indexOf("?")&&(e+="?download"),function(e,o){if("string"!=typeof e)return void console.error("openWindow: url必须是字符串");const{target:t="_blank",noopener:n=!0,noreferrer:r=!0}=o||{},i=[];n&&i.push("noopener=yes"),r&&i.push("noreferrer=yes"),window.open(e,t,i.join(","))}(e,{target:o}),!0}console.warn("小程序不支持此方法(downloadByUrl)")},exports.downloadFile=(e,o)=>{if(!e||"string"!=typeof e)return void console.error("downloadFile: url参数必须是有效的字符串");if(!o||"string"!=typeof o)return void console.error("downloadFile: fileName参数必须是有效的字符串");const t=new window.XMLHttpRequest;t.open("GET",e,!0),t.responseType="blob",t.onerror=()=>{console.error("下载文件时发生网络错误")},t.onload=()=>{if(200===t.status)try{const e=window.URL.createObjectURL(t.response),n=document.createElement("a");n.href=e,n.download=o,n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),window.URL.revokeObjectURL(e)}catch(e){console.error("处理下载文件时发生错误:",e)}else console.error(`下载文件失败,状态码: ${t.status}`)},t.send()},exports.fetchFileAndDownload=async(e,o,t)=>{const n=e;try{const e=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...o,__TYPE__:"DOWNLOAD"})});if(!e.ok)throw new Error(`HTTP error! status: ${e.status}`);const r=await e.blob(),i=e.headers.get("content-disposition"),d=/filename=([^;]+\.[^\.;]+)*/.exec(i||""),s=d?d[1]:t,a=document.createElement("a"),l=window.URL.createObjectURL(r);return a.style.display="none",a.href=l,a.download=decodeURI(s),document.body.appendChild(a),a.click(),document.body.removeChild(a),window.URL.revokeObjectURL(l),e}catch(e){console.info("ERROR",e)}},exports.getFileAttr=p,exports.getFileType=(e,o)=>{const t=e?.response?.data?p(e?.response?.data?.suffix):e.raw?.type||p(e[o.suffix]),n=t?.toLowerCase(),r={sheet:"excel",excel:"excel",zip:"zip","application/x-compressed":"zip",image:"image",video:"video",audio:"audio",pdf:"pdf",text:"txt",txt:"txt",word:"word",ppt:"ppt",exe:"exe",json:"json"};for(let e in r)if("string"==typeof n&&(n.includes(e)||n===e))return r[e];return"unknown"},exports.getFileTypes=e=>{let o="";return["doc","docx"].includes(e)&&(o="word"),["xls","xlsx"].includes(e)&&(o="cell"),["ppt","pptx"].includes(e)&&(o="slide"),["pdf"].includes(e)&&(o="text-pdf"),o},exports.isMacOSWebView=a,exports.saveAs=l,exports.urlToBase64=o;