中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

新宁县| 济宁市| 阿坝县| 偃师市| 土默特右旗| 天津市| 萝北县| 安陆市| 龙泉市| 合阳县| 彭泽县| 台中市| 株洲县| 长子县| 澄迈县| 南通市| 获嘉县| 梁河县| 和平区| 静安区| 卢湾区| 潞城市| 延寿县| 二连浩特市| 辉县市| 安福县| 安徽省| 浦江县| 宁城县| 安平县| 鲜城| 田阳县| 诏安县| 宁安市| 平谷区| 白沙| 黄梅县| 临汾市| 麻城市| 读书| 云安县|