<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<input id="ChooseFile" type="file" value="上传文件"/><span class="help-inline">选择本地文件</span>
<div id="log"></div>
</body>
<!--<script src="http://cdn.rawgit.com/satazor/SparkMD5/master/spark-md5.min.js"></script>-->
<script src="js/spark-md5.js" type="text/javascript" charset="utf-8"></script>
<script src="js/spark-md5.min.js" type="text/javascript" charset="utf-8"></script>
<script>
var log = document.getElementById("log");
document.getElementById("ChooseFile").addEventListener("change", function () {
var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
file = this.files[0],
chunkSize = 2097152, // 将文件切割成2m读取 因为文件太大可能读取失败
chunks = Math.ceil(file.size / chunkSize),
currentChunk = 0,
spark = new SparkMD5.ArrayBuffer(),
frOnload = function (e) {
spark.append(e.target.result);
currentChunk++;
if (currentChunk < chunks)//判断是否读取完成
loadNext();
else
//读取md5值
log.innerHTML = spark.end().toUpperCase();
};
function loadNext() {
var fileReader = new FileReader();
fileReader.onload = frOnload;
var start = currentChunk * chunkSize,
end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
};
loadNext();//调用
});
</script>
</body>
</html>