中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

使用Electron怎么實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳功能

本篇文章為大家展示了使用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)題。

方案流程圖:

使用Electron怎么實(shí)現(xiàn)大文件上傳和斷點(diǎn)續(xù)傳功能

上述內(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)

成都做網(wǎng)站
墨脱县| 德保县| 望城县| 迁安市| 阳高县| 大兴区| 富源县| 连江县| 大埔县| 兰坪| 永清县| 西平县| 高雄市| 西峡县| 辽中县| 星子县| 崇左市| 石首市| 黔东| 博客| 阿拉善右旗| 宣武区| 海南省| 汾阳市| 日喀则市| 保靖县| 堆龙德庆县| 武邑县| 东明县| 滨海县| 平昌县| 五常市| 宁陵县| 泸溪县| 琼结县| 延庆县| 崇礼县| 肥城市| 元谋县| 枣阳市| 孝昌县|