UNPKG

fast-file-upload

Version:

大文件分片+webWorker快速上传组件

2 lines (1 loc) 777 B
import"./chunk-6KMKD42J.mjs";var u=navigator.hardwareConcurrency||4,h=(a,c=5*1024*1024)=>new Promise(s=>{let r=[],i=0,l=Math.ceil(a.size/c),f=Math.ceil(l/u);for(let t=0;t<u;t++){let o=new Worker("./dist/work.js",{type:"module"}),e=t*f,n=e+f;n>l&&(n=l),o.postMessage({file:a,i:t,CHUNK_SIZE:c,startIndex:e,endIndex:n}),o.onmessage=({data:p})=>{for(let m=e;m<n;m++)r[m]=p[m-e];o.terminate(),i++,i===u&&s(r)}}});var k=(a,c)=>{let s=document.querySelector(a),{perCallback:r,lastCallback:i,chunkSize:l}=c||{};s.onchange=async()=>{let f=s.files?Array.from(s.files):[],t=[],o=f.length;for(let e of f)h(e,l).then(n=>{o--;let p={name:e.name,type:e.type,size:e.size,lastModified:e.lastModified,chunks:n};r&&r({...p,isDone:o===0}),t.push(p),o===0&&i&&i(t)})}};export{k as fastFileUpload};