日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html5计算文件hash,spark-md5生成hash码,spark-md5计算大文件hash码实现断点续传

發布時間:2024/1/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html5计算文件hash,spark-md5生成hash码,spark-md5计算大文件hash码实现断点续传 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spark-md5import?SparkMD5?from?'spark-md5';

var?hexHash?=?SparkMD5.hash('Hi?there');????????//?hex?hash

var?rawHash?=?SparkMD5.hash('Hi?there',?true);??//?OR?raw?hash?(binary?string)

這是最簡單的生成hash的方法,但是如果是大文件斷點續傳的話,這種方式獲取hash碼就不行了。因為你上傳的文件可能2G,4G,5G甚至更大,你的內存根本盛不下,這時候就需要換一種計算hash的方法了。function?calcMD5(file,callback){

this.upstate="MD5計算中...";

this.percent=0;

let?chunkSize=2097152,

chunks=Math.ceil(file.size/chunkSize),

currentChunk=0,

spark=new?SparkMD5.ArrayBuffer(),

fileReader=new?FileReader();

fileReader.οnlοad=(e)=>{

//對于讀取的文件計算hash碼。

spark.append(e.target.result);

currentChunk++;

this.percent=((currentChunk/chunks)*100).toFixed(2)-0;

if(currentChunk

loadNext();

}else{

callback(spark.end());

}

}

//分次讀取大文件的內容,

function?loadNext(){

let?start=currentChunk*chunkSize,

end=((start+chunkSize)>=file.size)?file.size:start+chunkSize;

fileReader.readAsArrayBuffer(file.slice(start,end));

}

loadNext();

},

上面這個方法,通過分片讀取文件,并將讀取的文件內容添加到sparkMD5的hash計算中,直到文件讀取完畢,最后返回最終的hash碼到callback回調函數里面。這種方法理論上讀取的文件可以無限大。

斷點續傳的原理

web中我們通過sparkMD5計算文件的hash碼,傳遞到后臺,后臺查詢此hash碼,如果查詢到,則表明此文件已經上傳過,或者已經上傳過一部分,如果是上傳了一部分,則返回已上傳的字節數,前端通過slice方法分割文件傳輸剩余的部分,就可以實現斷點續傳了。

這里暫對斷點續傳的原理做簡單介紹,下篇文章將詳細闡述斷點續傳的過程以及貼出實現代碼,敬請關注

總結

以上是生活随笔為你收集整理的html5计算文件hash,spark-md5生成hash码,spark-md5计算大文件hash码实现断点续传的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。