vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.17 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.getExportBlobByContent=getExportBlobByContent,exports.parseFile=parseFile,exports.saveLocalFile=exports.readLocalFile=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_core=require("@vxe-ui/core");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let fileForm=null,fileInput=null;function parseFile(e){var e=e.name,t=_xeUtils.default.lastIndexOf(e,"."),r=e.substring(t+1,e.length).toLowerCase();return{filename:e.substring(0,t),type:r}}const readLocalFile=e=>{const s=Object.assign({},e);return new Promise((o,n)=>{fileInput||((fileInput=document.createElement("input")).name="file",fileInput.type="file"),fileForm||((fileForm=document.createElement("form")).style.display="none",fileForm.appendChild(fileInput),document.body.appendChild(fileForm));const i=s.types||[],a=!i.length||i.some(e=>"*"===e);fileInput.multiple=!!s.multiple,fileInput.accept=a?"":"."+i.join(", ."),fileInput.onchange=e=>{var e=e.target,t=Array.from(e.files||[]),e=t[0];let r="";if(!a)for(let e=0;e<t.length;e++){var l=parseFile(t[e])["type"];if(!_xeUtils.default.includes(i,l)){r=l;break}}r?(!1!==s.message&&_core.VxeUI.modal&&_core.VxeUI.modal.message({content:(0,_core.getI18n)("vxe.error.notType",[r]),status:"error"}),n({status:!1,files:t,file:e})):o({status:!0,files:t,file:e})},fileForm.reset(),fileInput.click()})};function getExportBlobByContent(e,t){return new Blob([e],{type:`text/${t.type};charset=utf-8;`})}exports.readLocalFile=readLocalFile;const saveLocalFile=e=>{var e=Object.assign({type:""},e),{filename:t,type:r,content:l}=e,r=r?t+"."+r:""+t;if(window.Blob){t=l instanceof Blob?l:getExportBlobByContent(_xeUtils.default.toValueString(l),e),l=window.navigator;if(l.msSaveBlob)l.msSaveBlob(t,r);else{const o=URL.createObjectURL(t),n=document.createElement("a");n.target="_blank",n.download=r,n.href=o,document.body.appendChild(n),n.click(),requestAnimationFrame(()=>{n.parentNode&&n.parentNode.removeChild(n),URL.revokeObjectURL(o)})}return Promise.resolve()}return Promise.reject(new Error((0,_core.getI18n)("vxe.error.notExp")))};exports.saveLocalFile=saveLocalFile;