91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Electron怎么實現大文件上傳和斷點續傳功能

發布時間:2021-05-22 17:25:37 來源:億速云 閱讀:302 作者:Leah 欄目:web開發

本篇文章為大家展示了使用Electron怎么實現大文件上傳和斷點續傳功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

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);//總共的分片數 
  function uploadPiece (i){ 
    //計算每塊的結束位置
    let enddata = Math.min(size, (i + 1) * chunkSize);
    let arr = [];
    //創建一個readStream對象,根據文件起始位置和結束位置讀取固定的分片
    let readStream = fs.createReadStream(path, { start: i * chunkSize, end: enddata-1 });
      //on data讀取數據
      readStream.on(‘data‘, (data)=>{
        arr.push(data)
      }) 
      //on end在該分片讀取完成時觸發
      readStream.on(‘end‘, ()=>{
        //這里服務端只接受blob對象,需要把原始的數據流轉成blob對象,這塊為了配合后端才轉
        let blob = new Blob(arr)
        //新建formdata數據對象
        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 + ‘‘); // 數字30被轉換成字符串"30"
        formdata.append("chunk", i + ‘‘);//第幾個分片,從0開始
        formdata.append("chunks", pieces + ‘‘);//分片數
        formdata.append("name", name);//文件名
        post(formdata)//這里是偽代碼,實現上傳,開發者自己實現
  }
}

以上代碼就是上傳的核心部分,我們首先讀取文件的基本信息,如路徑,大小進行分塊,然后將每塊上傳,我們上傳循環上傳整個文件的分片,就循環調用uploadpiece方法。那么我們怎么實現斷點續傳呢?上面的代碼中我們計算每塊的md5值,這里計算每個md5值就是為了斷點續傳使用。我們每次上傳文件前,我們會先調用預上傳接口,預上傳接口中,前端傳入fileId,后端會將改文件已經上傳的分塊的md5數組傳給前端,前端將該文件的分塊的md5值和后端返回的md5值進行逐個對比,跳過已經上傳的分塊。這樣就實現了大文件的上傳和斷點續傳的問題。

方案流程圖:

使用Electron怎么實現大文件上傳和斷點續傳功能

上述內容就是使用Electron怎么實現大文件上傳和斷點續傳功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉川市| 泾源县| 汕头市| 筠连县| 天柱县| 桐柏县| 东阳市| 治多县| 乐至县| 蒙阴县| 榆社县| 永福县| 阿勒泰市| 吉木乃县| 西充县| 固原市| 和平区| 呼和浩特市| 合水县| 神池县| 都昌县| 屏南县| 海阳市| 涟水县| 宜黄县| 九台市| 乐东| 新平| 新乡县| 鄂托克旗| 阳曲县| 靖边县| 黔江区| 安顺市| 新化县| 邯郸县| 茶陵县| 新闻| 九龙县| 铁力市| 博客|