首先需要引入js文件(二选一):
https://raw.github.com/satazor/SparkMD5/master/spark-md5.js https://github.com/satazor/SparkMD5/blob/master/spark-md5.js
示例代码(需要更换spark-md5.js的路径):
<html> <head> <script type="text/javascript" src="spark-md5.js" ></script> </head> <body> <input type="file" id="file" /> <div id="box"></div> <button id="cal" type="button" onclick="calculate()">计算md5</button> </body> <script> function calculate(){ var fileReader = new FileReader(), box=document.getElementById('box'); blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice, file = document.getElementById("file").files[0], chunkSize = 2097152, // read in chunks of 2MB chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, spark = new SparkMD5(); fileReader.onload = function(e) { console.log("read chunk nr", currentChunk + 1, "of", chunks); spark.appendBinary(e.target.result); // append binary string currentChunk++; if (currentChunk < chunks) { loadNext(); } else { console.log("finished loading"); box.innerText='MD5 hash:'+spark.end(); console.info("computed hash", spark.end()); // compute hash } }; function loadNext() { var start = currentChunk * chunkSize, end = start + chunkSize >= file.size ? file.size : start + chunkSize; fileReader.readAsBinaryString(blobSlice.call(file, start, end)); }; loadNext(); } </script> </html>