我們開始吧,接下來上代碼:
首先第一種方法:
var running = false; //running用于判斷是否正在計算md5functiondoNormalTest( input ) { //這里假設直接將文件選擇框的dom引用傳入if (running) { // 如果正在計算、不允許開始下一次計算return;}var fileReader = new FileReader(), //創建FileReader實例time;fileReader.onload = function (e) { //FileReader的load事件,當文件讀取完畢時觸發running = false;// e.target指向上面的fileReader實例if (file.size != e.target.result.length) { //如果兩者不一致說明讀取出錯alert("ERROR:Browser reported success but could not read the file until the end.");} else {console.log(Finished loading!success!!);return SparkMD5.hashBinary(e.target.result); //計算md5并返回結果}};fileReader.onerror = function () { //如果讀取文件出錯,取消讀取狀態并彈框報錯running = false;alert("ERROR:FileReader onerror was triggered, maybe the browser aborted due to high memory usage.");};running = true;fileReader.readAsBinaryString( input.files[0] ); //通過fileReader讀取文件二進制碼};