当前位置: 首页 > news >正文

vue上传文件MD5加密

1.下载MD5依赖
npm install crypto-js
2.在utils文件夹中新增文件md5方法文件,文件名自定义(fileMd5Sum.js)

import CryptoJs from 'crypto-js' 
export default {// md5值计算fileMd5Sum(file) {let CryptoJS = require("crypto-js");return new Promise(resolve => {const fileReader = new FileReader();fileReader.onloadend = ev => {resolve(CryptoJS.MD5(CryptoJS.enc.Latin1.parse(ev.target.result)).toString(CryptoJS.enc.Hex));};fileReader.readAsBinaryString(file);});}
}

3.定义全局变量在main.js中引入

//文件md5计算方法
import fileMd5Sum from '@/utils/fileMd5Sum.js';
Vue.prototype.fileMd5Sum = fileMd5Sum;

4.使用

// files是上传的文件
this.fileMd5Sum.fileMd5Sum(files).then((res)-=>{console.log(res) // res就是加密后生成的md5
})

5.这是一个切片上传的例子

// dom
<el-upload :show-file-list="false" accept=".doc,.docx" ref="uploads" :limit="1" action:http-request="putinMirror3" :auto-upload="true"><el-button size="small" type="primary">数据上传</el-button><el-input v-model="addform.dataTestnMame" autocomplete="off" style="width:350px;margin-left: 20px;" disabledv-if="first4"></el-input><el-progress :text-inside="true" :stroke-width="26" :percentage="percentage4" v-if="!first4"style="position:absolute;left:150px;width:300px;top:0px"></el-progress></el-upload>// 切片上传putinMirror3(file) {let param = {fileName: file.file.name}firstFileUp(param).then(response => {var uploadId = response.data.uploadId// 每个文件切片大小定为5MBvar sliceSize = 50 * 1024 * 1024;//文件大小限制为最大10个G,可根据需求修改var filesizes = 100 * 1024 * 1024 * 1024;let that = this;const blob = file.file;const fileSize = blob.size;// 文件大小// this.fileNmae.push(blob.name)const fileName = blob.name;// 文件名//计算文件切片总数var totalSlice = 0;if (fileSize >= sliceSize) {totalSlice = Math.ceil(fileSize / sliceSize)} else {totalSlice = 1}var num = 0var list = []var guid = Date.parse(new Date())if (fileSize <= filesizes) {// 循环上传for (let i = 0; i < totalSlice; i++) {let start = i * sliceSize;let chunk = blob.slice(start, Math.min(fileSize, start + sliceSize));let files = new File([chunk], fileName)let partSize = files.sizethis.fileMd5Sum.fileMd5Sum(files).then(res => {var formData = new FormData();formData.append("uploadId", uploadId);formData.append("file", files);formData.append("partSize", partSize);formData.append("partNumber", i + 1);formData.append("md5Digest", res);let instance = axios.create({baseURL: 'baseUrl',data: formData,headers: { 'Content-Type': 'multipart/form-data', 'Authorization': "Bearer " + getAccessToken() }})this.first4 = falseinstance.post(`${this.uploadFileUrl}`, formData).then((res) => {if (res.data.code == 0) {list.push(res.data.data)this.percentage4 = Number(((list.length / totalSlice) * 100).toFixed(2))if (list.length == totalSlice) {let param = {uploadId: uploadId,partTags: list}secendFileUp(param).then(response => {this.fileList4.push(response.data)this.percentage4 = 100});}} else {that.$message({message: res.msg,type: 'error'});}})});}} else {that.$message({message: '文件大小超出10G',type: 'error'});}});},
http://www.lryc.cn/news/190019.html

相关文章:

  • vue2 .sync 修饰符
  • 使用Tensorrt的一般步骤
  • uniapp apple 苹果登录 离线本地打包
  • 【数据库】Sql Server数据迁移,处理自增字段赋值
  • JOSEF约瑟 矿用一般型选择性漏电继电器 LXY2-660 Φ45 JKY1-660
  • DHCP自动分配IP原理
  • 读书笔记-《ON JAVA 中文版》-摘要26[第二十三章 注解]
  • IDEA报Error:java:无效的源发行版13解决方式
  • 基于SpringBoot的健身房管理系统
  • 竞赛选题 深度学习 植物识别算法系统
  • 希尔贝壳受邀参加《人工智能开发平台通用能力要求 第4部分:大模型技术要求》标准第一次研讨会
  • 虹科方案 | AR助力仓储物流突破困境:规模化运营与成本节约
  • spring容器ioc和di
  • Maven 仓库地址
  • 【2023研电赛】安谋科技企业命题特别奖:面向独居老人的智能居家监护系统
  • [Machine learning][Part4] 多维矩阵下的梯度下降线性预测模型的实现
  • LCR 078. 合并 K 个升序链表
  • JVM面试题:(三)GC和垃圾回收算法
  • hive建表指定列分隔符为多字符分隔符实战(默认只支持单字符)
  • android.app.RemoteServiceException: can‘t deliver broadcast
  • 信创办公–基于WPS的EXCEL最佳实践系列 (单元格与行列)
  • VsCode同时编译多个C文件
  • Android绑定式服务
  • 系统韧性研究(1)| 何谓「系统韧性」?
  • 使用Perl脚本编写爬虫程序的一些技术问题解答
  • SAP内部转移价格(利润中心转移价格)的条件
  • WRF如何批量输出文件添加或删除文件名后缀
  • Ubuntu右上角不显示网络的图标解决办法
  • AM@数列极限
  • Vue-2.3v-model原理