0


js:spark-md5分片计算文件的md5值

SparkMD5 is a fast md5 implementation of the MD5 algorithm.

文档

CDN引入

  1. <scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script>

npm安装

  1. npminstall--save spark-md5

使用方式一:

  1. var hexHash = SparkMD5.hash('Hi there')
  2. console.log(hexHash)// d9385462d3deff78c352ebb3f941ce12

使用方式二:

  1. var spark =newSparkMD5()
  2. spark.append('Hi')
  3. spark.append(' ')
  4. spark.append('there')var hexHash = spark.end()
  5. console.log(hexHash)// d9385462d3deff78c352ebb3f941ce12

计算文件md5值

  1. <scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script><inputtype="file"id="file"/><script>/**
  2. * 计算文件md5值
  3. */functiongetFileMd5(file){returnnewPromise((resolve, reject)=>{let fileReader =newFileReader()
  4. fileReader.onload=function(event){let fileMd5 = SparkMD5.ArrayBuffer.hash(event.target.result)resolve(fileMd5)}
  5. fileReader.readAsArrayBuffer(file)})}
  6. document.getElementById('file').onchange=function(event){let file = event.target.files[0]getFileMd5(file).then((md5)=>{
  7. console.log(md5)// e311a516191b1643e3f63cb05163d11a})}</script>

分片读取文件,并计算md5值

  1. <scriptsrc="https://cdn.bootcdn.net/ajax/libs/spark-md5/3.0.2/spark-md5.min.js"></script><inputtype="file"id="file"/><script>/**
  2. * 分片读取文件,计算最终md5值
  3. */functiongetFileMd5BySlice(file, chunkSize){// 默认分片大小 2MBlet defaultChunkSize =1024*1024*2returnnewPromise((resolve, reject)=>{
  4. chunkSize = chunkSize || defaultChunkSize
  5. let blobSlice =File.prototype.slice ||File.prototype.mozSlice ||File.prototype.webkitSlice,// 总分片数
  6. chunks = Math.ceil(file.size / chunkSize),
  7. currentChunk =0,
  8. spark =newSparkMD5.ArrayBuffer(),
  9. fileReader =newFileReader()
  10. fileReader.onload=function(e){
  11. console.log('read chunk nr', currentChunk +1,'of', chunks)
  12. spark.append(e.target.result)// Append array buffer
  13. currentChunk++if(currentChunk < chunks){loadNext()}else{resolve(spark.end())}}
  14. fileReader.onerror=function(error){reject(error)}functionloadNext(){// 切片起始位置let start = currentChunk * chunkSize
  15. // 切片终止位置let end = start + chunkSize
  16. if(end >= file.size){
  17. end = file.size
  18. }
  19. fileReader.readAsArrayBuffer(blobSlice.call(file, start, end))}loadNext()})}
  20. document.getElementById('file').addEventListener('change',function(e){let startTime =newDate().getTime()let file = e.target.files[0]getFileMd5BySlice(file).then((res)=>{
  21. console.log(res)// 52fde8264e2640cd5b95fdb123de0eba
  22. 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
版权归原作者 彭世瑜 所有, 如有侵权,请联系我们删除。

“js:spark-md5分片计算文件的md5值”的评论:

还没有评论