<!DOCTYPE html>
<html>
<head>
<meta charset=
"UTF-8"
>
<title>Document</title>
</head>
<body>
<div>
<div>
添加文件
<input type=
"file"
name=
""
id=
"fileinput"
>
</div>
<progress value=
"0"
max=
"100"
style='width:500px;margin-top:20px'></progress>
<div style='margin-top:20px'>
<span id=
"handler_info"
></span>
</div>
</div>
<script src=
"Scripts/spark-md5.js"
></script>
<script>
function
get_filemd5sum(ofile) {
var
file = ofile;
var
tmp_md5;
var
blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
chunkSize = 2 * 1024 * 1024,
chunks = Math.
ceil
(file.size / chunkSize),
currentChunk = 0,
spark =
new
SparkMD5.ArrayBuffer(),
fileReader =
new
FileReader();
fileReader.onload =
function
(e) {
spark.append(e.target.result);
currentChunk++;
var
md5_progress = Math.
floor
((currentChunk / chunks) * 100);
console.log(file.name +
" 正在处理,请稍等,"
+
"已完成"
+ md5_progress +
"%"
);
var
handler_info = document.getElementById(
"handler_info"
);
var
progressbar = document.getElementsByClassName(
"progressbar"
)[0];
handler_info.innerHTML=file.name +
" 正在处理,请稍等,"
+
"已完成"
+ md5_progress +
"%"
progressbar.value =md5_progress;
if
(currentChunk < chunks) {
loadNext();
}
else
{
tmp_md5 = spark.
end
();
console.log(tmp_md5)
handler_info.innerHTML = file.name +
"的MD5值是:"
+ tmp_md5;
}
};
fileReader.onerror =
function
() {
console.warn('oops, something went wrong.');
};
function
loadNext() {
var
start = currentChunk * chunkSize,
end
= ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;
fileReader.readAsArrayBuffer(blobSlice.call(file, start,
end
));
}
loadNext();
}
var
uploadfile = document.getElementById('fileinput')
uploadfile.onchange =
function
(e){
var
file = this.files[0];
if
(!file) {
alert('请选择文件!');
return
false;
}
get_filemd5sum(file)
}
</script>
</body>
</html>