vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.15 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,"."),l=e.substring(t+1,e.length).toLowerCase();return{filename:e.substring(0,t),type:l}}let readLocalFile=e=>{let 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));let 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 l="";if(!a)for(let e=0;e<t.length;e++){var r=parseFile(t[e]).type;if(!_xeUtils.default.includes(i,r)){l=r;break}}l?(!1!==s.message&&_core.VxeUI.modal&&_core.VxeUI.modal.message({content:(0,_core.getI18n)("vxe.error.notType",[l]),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;let saveLocalFile=e=>{var e=Object.assign({type:""},e),{filename:l,type:r,content:t}=e,r=r?l+"."+r:""+l;if(window.Blob){l=t instanceof Blob?t:getExportBlobByContent(_xeUtils.default.toValueString(t),e),t=window.navigator;if(t.msSaveBlob)t.msSaveBlob(l,r);else{let e=URL.createObjectURL(l),t=document.createElement("a");t.target="_blank",t.download=r,t.href=e,document.body.appendChild(t),t.click(),requestAnimationFrame(()=>{t.parentNode&&t.parentNode.removeChild(t),URL.revokeObjectURL(e)})}return Promise.resolve()}return Promise.reject(new Error((0,_core.getI18n)("vxe.error.notExp")))};exports.saveLocalFile=saveLocalFile;