上传文件时得到文件的md5值(推荐阅读)

1.安装spark MD5

npm i spark MD5

2.vue文件中引入

import SparkMD5 from 'spark-md5'

3.使用

方法一:
    handlePrepareUpload() {
      var fileReader = new FileReader();
      var dataFile = this.fileList[0];
      const _this = this
      var spark = new SparkMD5(); //创建md5对象(基于SparkMD5)
      if (dataFile.size > 1024 * 1024*10) {
        var data1 = dataFile.slice(0, 1024 * 1024*10); //将文件进行分块 file.slice(start,length)
        fileReader.readAsBinaryString(data1); //将文件读取为二进制码
      } else {
        fileReader.readAsBinaryString(dataFile);
      }

      //文件读取完毕之后的处理
      //a639e28526d1809745b46bf1189594fe  6d9efe0c593b1383482feb229318e03a
      fileReader.onload = function(e) {
        spark.appendBinary(e.target.result);
        var md5 = spark.end()
        console.log(md5)
        _this.getMd5Checked(md5)
      };
    },
方法二:经测试可用
        handlePrepareUpload() {
          var file = this.fileList[0]
         const fileSize = file.size; // 文件大小
         const chunkSize = 1024 * 1024 * 10; // 切片的大小
         const chunks = Math.ceil(fileSize / chunkSize); // 获取切片个数
         const fileReader = new FileReader();
         const spark = new SparkMD5.ArrayBuffer();
         const bolbSlice =
             File.prototype.slice ||
             File.prototype.mozSlice ||
             File.prototype.webkitSlice;
         let currentChunk = 0;

         fileReader.onload = e => {
             const res = e.target.result;
             spark.append(res);
             currentChunk++;
             if (currentChunk < chunks) {
                 loadNext();
                 console.log(`第${currentChunk}分片解析完成, 开始第${currentChunk +1}分片解析`);
             } else {
                 const md5 = spark.end();
                 console.log('解析完成');
                 alert(md5)
             }
         };

         const loadNext = () => {
             const start = currentChunk * chunkSize;
             const end =
                 start + chunkSize > file.size ? file.size : start + chunkSize;
             fileReader.readAsArrayBuffer(bolbSlice.call(file, start, end));
         };
         loadNext();
     },



作者:二营长家的张大炮
链接:https://www.jianshu.com/p/59d076ff88e0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值