亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

使用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

长沙县| 山东| 元谋县| 民县| 鱼台县| 武威市| 布尔津县| 宁陵县| 繁昌县| 嵊泗县| 扬中市| 克拉玛依市| 黔江区| 来安县| 板桥市| 江北区| 驻马店市| 甘肃省| 安乡县| 阿拉善左旗| 剑阁县| 上虞市| 巴东县| 陕西省| 万全县| 杭州市| 全椒县| 丹江口市| 社旗县| 盈江县| 淅川县| 安阳市| 治县。| 龙山县| 即墨市| 五华县| 尉氏县| 石景山区| 密云县| 东方市| 江西省|