本篇文章為大家展示了使用Electron怎么實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站主營(yíng)盤龍網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),盤龍h5成都小程序開發(fā)搭建,盤龍網(wǎng)站營(yíng)銷推廣歡迎盤龍等地區(qū)企業(yè)咨詢
singleUpload function(file){ let path = file.path; //文件本地路徑 let stats = fs.statSync(path);//讀取文件信息 let chunkSize = 3*1024*1024;//每片分塊的大小3M let size = stats.size;//文件大小 let pieces = Math.ceil(size / chunkSize);//總共的分片數(shù) function uploadPiece (i){ //計(jì)算每塊的結(jié)束位置 let enddata = Math.min(size, (i + 1) * chunkSize); let arr = []; //創(chuàng)建一個(gè)readStream對(duì)象,根據(jù)文件起始位置和結(jié)束位置讀取固定的分片 let readStream = fs.createReadStream(path, { start: i * chunkSize, end: enddata-1 }); //on data讀取數(shù)據(jù) readStream.on(‘data‘, (data)=>{ arr.push(data) }) //on end在該分片讀取完成時(shí)觸發(fā) readStream.on(‘end‘, ()=>{ //這里服務(wù)端只接受blob對(duì)象,需要把原始的數(shù)據(jù)流轉(zhuǎn)成blob對(duì)象,這塊為了配合后端才轉(zhuǎn) let blob = new Blob(arr) //新建formdata數(shù)據(jù)對(duì)象 var formdata = new FormData(); let md5Val = md5(Buffer.concat(arr)); formdata.append("file", blob); console.log(‘blob.size‘,blob.size) formdata.append("md5", md5Val); formdata.append("size", size + ‘‘); // 數(shù)字30被轉(zhuǎn)換成字符串"30" formdata.append("chunk", i + ‘‘);//第幾個(gè)分片,從0開始 formdata.append("chunks", pieces + ‘‘);//分片數(shù) formdata.append("name", name);//文件名 post(formdata)//這里是偽代碼,實(shí)現(xiàn)上傳,開發(fā)者自己實(shí)現(xiàn) } }
以上代碼就是上傳的核心部分,我們首先讀取文件的基本信息,如路徑,大小進(jìn)行分塊,然后將每塊上傳,我們上傳循環(huán)上傳整個(gè)文件的分片,就循環(huán)調(diào)用uploadpiece方法。那么我們?cè)趺磳?shí)現(xiàn)斷點(diǎn)續(xù)傳呢?上面的代碼中我們計(jì)算每塊的md5值,這里計(jì)算每個(gè)md5值就是為了斷點(diǎn)續(xù)傳使用。我們每次上傳文件前,我們會(huì)先調(diào)用預(yù)上傳接口,預(yù)上傳接口中,前端傳入fileId,后端會(huì)將改文件已經(jīng)上傳的分塊的md5數(shù)組傳給前端,前端將該文件的分塊的md5值和后端返回的md5值進(jìn)行逐個(gè)對(duì)比,跳過(guò)已經(jīng)上傳的分塊。這樣就實(shí)現(xiàn)了大文件的上傳和斷點(diǎn)續(xù)傳的問(wèn)題。
方案流程圖:
上述內(nèi)容就是使用Electron怎么實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享名稱:使用Electron怎么實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳功能
文章地址:http://www.rwnh.cn/article36/gcgjpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站營(yíng)銷、品牌網(wǎng)站制作、網(wǎng)站改版、小程序開發(fā)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)