SparkMD5 is a fast md5 implementation of the MD5 algorithm.
文档
CDN引入
<scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script>
npm安装
npminstall--save spark-md5
使用方式一:
var hexHash = SparkMD5.hash('Hi there')
console.log(hexHash)// d9385462d3deff78c352ebb3f941ce12
使用方式二:
var spark =newSparkMD5()
spark.append('Hi')
spark.append(' ')
spark.append('there')var hexHash = spark.end()
console.log(hexHash)// d9385462d3deff78c352ebb3f941ce12
计算文件md5值
<scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script><inputtype="file"id="file"/><script>/**
* 计算文件md5值
*/functiongetFileMd5(file){returnnewPromise((resolve, reject)=>{let fileReader =newFileReader()
fileReader.onload=function(event){let fileMd5 = SparkMD5.ArrayBuffer.hash(event.target.result)resolve(fileMd5)}
fileReader.readAsArrayBuffer(file)})}
document.getElementById('file').onchange=function(event){let file = event.target.files[0]getFileMd5(file).then((md5)=>{
console.log(md5)// e311a516191b1643e3f63cb05163d11a})}</script>
分片读取文件,并计算md5值
<scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script><inputtype="file"id="file"/><script>/**
* 分片读取文件,计算最终md5值
*/functiongetFileMd5BySlice(file, chunkSize){// 默认分片大小 2MBlet defaultChunkSize =1024*1024*2returnnewPromise((resolve, reject)=>{
chunkSize = chunkSize || defaultChunkSize
let blobSlice =File.prototype.slice ||File.prototype.mozSlice ||File.prototype.webkitSlice,// 总分片数
chunks = Math.ceil(file.size / chunkSize),
currentChunk =0,
spark =newSparkMD5.ArrayBuffer(),
fileReader =newFileReader()
fileReader.onload=function(e){
console.log('read chunk nr', currentChunk +1,'of', chunks)
spark.append(e.target.result)// Append array buffer
currentChunk++if(currentChunk < chunks){loadNext()}else{resolve(spark.end())}}
fileReader.onerror=function(error){reject(error)}functionloadNext(){// 切片起始位置let start = currentChunk * chunkSize
// 切片终止位置let end = start + chunkSize
if(end >= file.size){
end = file.size
}
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end))}loadNext()})}
document.getElementById('file').addEventListener('change',function(e){let startTime =newDate().getTime()let file = e.target.files[0]getFileMd5BySlice(file).then((res)=>{
console.log(res)// 52fde8264e2640cd5b95fdb123de0eba
console.log(newDate().getTime()- startTime)// 4611 2M// 4167 10M// 4333 20M// 4070 50M// 4160 100M})})</script>
参考
spark.md5.js获取文件的md5值
本文转载自: https://blog.csdn.net/mouday/article/details/128405931
版权归原作者 彭世瑜 所有, 如有侵权,请联系我们删除。
版权归原作者 彭世瑜 所有, 如有侵权,请联系我们删除。