ts js vue 验证文件 MD5 值 spark-md5

ts js vue 验证文件 MD5 值 spark-md5

如何在前端中验证要上传的文件的 md5 值

在这里插入图片描述

一、安装 spark-md5 插件

需要用到 spark-md5 这个插件

官方 github:https://github.com/satazor/js-spark-md5/tree/master

yarn add spark-md5
//  或
npm i spark-md5

使用的时候引入:

import SparkMD5 from "spark-md5";

二、封装成一个方法

要验证文件的 md5 ,官方的文档里就有这个例子,直接照抄它,我封装了下,封成了一个返回 Promise 的方法。如下:

这是一个 TS 版本的,改成 js 只需要将入口处的文件类型定义去除就可以了
function generateMD5OfFile(file) {

import SparkMD5 from "spark-md5";/*** 生成一个文件的 MD5 值* @param file File*/
function generateMD5OfFile(file: File) : Promise<string>{return new Promise((resolve, reject) => {let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,chunkSize = 2097152,                             // Read in chunks of 2MBchunks = Math.ceil(file.size / chunkSize),currentChunk = 0,spark = new SparkMD5.ArrayBuffer(),fileReader = new FileReader();fileReader.onload = function (e) {console.log('read chunk nr', currentChunk + 1, 'of', chunks);spark.append(e.target.result);                   // Append array buffercurrentChunk++;if (currentChunk < chunks) {loadNext();} else {resolve(spark.end())console.log('finished loading');console.info('computed hash', spark.end());  // Compute hash}};fileReader.onerror = function () {console.warn('oops, something went wrong.');reject('MD5 calc error')};function loadNext() {let start = currentChunk * chunkSize,end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize;fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));}loadNext();})
}

三、使用它

如何使用,你可以将这个方法,下面是大体的内容,不全,但能表达具体操作过程了。

<el-form-item label="升级文件"><el-uploadref="refFormBoxUpdate"class="upload-demo"action="null":limit="10":auto-upload="false":on-change="handleChange":on-remove="handleRemove":multiple="false"><el-button size="default" type="primary" icon="Files">选择云盒升级文件</el-button></el-upload>
</el-form-item>
<el-form-item label="MD5" prop="md5"><el-input v-model.trim="formBoxUpgrade.md5" placeholder="请输入文件验证 MD5"/>
</el-form-item><script setup lang="ts">
import {generateMD5OfFile} from "@/utility.ts";const refUpload = ref()
const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {console.log(file, uploadFiles)
}
const handleChange: UploadProps['onChange'] = (file, uploadFiles) => {console.log(file, uploadFiles)formBoxUpgrade.value.file = file.rawif (file.raw){// 当文件变化时,直接用它生成 md5generateMD5OfFile(file.raw).then(res =>{formBoxUpgrade.value.md5 = res})}
}
</script>

四、结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/764117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于python+vue文学名著分享系统的设计与实现flask-django-nodejs-php

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理存在工作效率…

有没有适合pr剪辑视频使用的蓝色魔法火焰能量特效素材模板

12个蓝色魔法火焰能量特效VFX元素pr素材模板。 可定制的能量电荷、灰尘等离子体和发光的电火花是游戏电影、电影特效或有影响力的视频内容的理想选择&#xff0c;增添了史诗般的电影质量。无论是神秘的爆炸、闪闪发光的闪电还是旋转的漩涡&#xff0c;每一部动画都是力量的灯塔…

Git版本控制

这是两个学习Git推荐必看的文档&#xff0c;第一个链接是Git的官方权威文档&#xff0c;第二个链接是国内程序员在开发中&#xff0c;总结的Git快速入门教程&#xff0c;掌握这个&#xff0c;也足够应付在工作中的场景。 Git权威书籍《ProGit》中文版https://gitee.com/progit…

Android Studio 编译报错 ( Could not find com.android.tools.build:gradle:4.2.1.)

检查下根目录下的 build.gradle 配置 , 是否只配置了 jcenter 仓库 &#xff0c;加上 google()mavenCentral() 重新编译试一下

全网最靠谱的短网址平台,你知道几个?

在当今互联网时代&#xff0c;短网址平台成为了人们分享链接的常用工具。它们不仅可以将冗长的网址压缩为简洁的短链接&#xff0c;还能提供更多的功能和优势。在众多的短网址平台中&#xff0c;有几个平台以其可靠性和出色的性能脱颖而出。今天&#xff0c;我们就来介绍几个全…

《数字人》三个灵魂拷问 是什么?为什么?怎么用?

数字人的出现和发展是由于人工智能和计算机图形学等技术的进步&#xff0c;使得我们可以更好地模拟和创造人类的外貌、行为和交流能力。 1.数字人是什么&#xff1f; 数字人通常是指利用计算机技术和人工智能技术创建的虚拟人物或角色。这些数字化的人物可以具有各种外貌、行为…

计算机网络基础知识

一、网络概述 1.网络定义与功能 利用通信线路物理地将不同的终端连接起来&#xff0c;按照网络协议相互通信&#xff0c;以共享软件、硬件和数据资源为目标的系统 数据通信&#xff1a;在计算机之间传送各种信息 资源共享&#xff1a;硬件资源共享、软件资源共享 负荷均衡&am…

鸿蒙开发钱途不可限量!万人大厂岗位激增月入2万机会来了

抢人&#xff01;抢人&#xff01;抢人&#xff01; 抢滩鸿蒙&#xff0c;人才先行。2024年鸿蒙人才抢夺大战一触即发&#xff0c;刻不容缓。 随着时代的发展&#xff0c;就业竞争愈加激烈&#xff0c;内卷化越来越严重。如今互联网行业以及计算机软件开发领域成为了很多大学…

transformer的学习:Attention is all you need

目录 整体概述&#xff1a;​编辑​编辑 encoder&#xff1a; embedding&#xff1a; ​编辑 self-attention&#xff1a; 向量的相似度计算&#xff1a; qkv怎么来的​编辑 softmax&#xff1a; code multi-head-attention 位置编码&#xff1a; 残差&&FFN&…

使用ansible剧本进行lvm分盘

使用 Ansible 剧本&#xff08;Playbook&#xff09;进行 LVM 分区管理是一种自动化的方式&#xff0c;可以帮助管理员在多台主机上批量管理逻辑卷。 部署环境 3台主机&#xff0c;添加硬盘 ansible-galaxy collection install community.general 联网执行&#xff0c;下…

Linux课程____Samba文件共享服务

一、 Samba服务基础 SMB协议&#xff0c;服务消息块 CIFS协议&#xff0c;通用互联网文件系统 1.Samba 服务器的主要程序 smbd:提供对服务器中文件、打印资源的共享访问 nmbd:提供基于 NetBlOS 主机名称的解析 2.目录文件 /etc/samba/smb.conf 检查工具&#xff1a;test…

d3dcompiler_47.dll缺失怎么修复?分享五种方法

在计算机编程和游戏开发中&#xff0c;D3DCompiler47.dll文件是一个非常重要的组件。它是由微软公司开发的DirectX SDK的一部分&#xff0c;主要用于编译DirectX的Shader代码。然而&#xff0c;对于许多初学者和开发者来说&#xff0c;他们可能对这个文件的属性和功能并不完全了…

python的O2O生鲜食品订购flask-django-nodejs-php

用户只能通过一些类似软件进行查看生鲜超市&#xff0c;这样的管理方式仍然是比较机械传统的&#xff0c;本文通过对市面上常见的线上管理系统与现实生活中结合问题的讨论&#xff0c;从一个微信小程序的O2O生鲜食品订购角度进行需求分析&#xff0c;提供一些新的思路&#xff…

RHCSA(第一天)

1.部署Linux环境&#xff1a; 安装Vmware之后&#xff0c;在windows会产生两个虚拟网卡&#xff1a;vmnet1&#xff0c; vmnet8 部署Linux&#xff1a;需要有网卡&#xff0c;必须要知道root用户的密码&#xff0c;和你普通的用户的用户名和密码 远程连接配置&#xff1a…

Linux:文件读取指令

Linux&#xff1a;文件读取指令 cat指令more指令less指令head指令 & tail指令grep指令 cat指令 cat指令用于查看目标文件的内容。 语法&#xff1a;cat [选项][文件] 比如直接使用cat读取一个文件&#xff1a; 可以看到&#xff0c;其直接在指令的下方&#xff0c;输出了t…

Python中错误和异常的区别你搞清楚了吗?

​ 在Python编程的世界里&#xff0c;错误&#xff08;Error&#xff09;和异常&#xff08;Exception&#xff09;都是用来处理运行时出现的问题的。但它们之间有着微妙的差别&#xff0c;今天我们就来弄清楚。 错误&#xff08;Error&#xff09;通常指的是那些更严重、不可…

OrangeDAO联合创始人Don Ho确认出席Hack.Summit() 2024区块链开发者大会

随着Web3技术的快速发展&#xff0c;区块链领域备受关注的盛会——Hack.Summit() 2024 区块链开发者大会即将于 2024 年 4 月 9 日至 10 日在香港数码港隆重启幕。本次大会不仅是 Hack.Summit() 系列在亚洲的首次亮相&#xff0c;更象征着全球区块链行业对亚洲&#xff0c;尤其…

python基础知识(三)基本编程题,应用题

基本编程题 1.从键盘输入一个整数和一个字符&#xff0c;以逗号隔开&#xff0c;在屏慕上显示输出一条信息。 示例如下: 输入&#xff1a; 10, 输出&#xff1a; 10 s input("请输入一个整数和一个字符&#xff0c;用逗号隔开&#xff1a;")l s.split(",&q…

3.2 CSS选择器

3.2.1 元素选择器 在CSS中最常见的选择器就是元素选择器&#xff0c;即采用HTML文档中的元素名称进行样式规定。元素选择器又称为类型选择器&#xff0c;可以用于匹配HTML文档中某一个元素类型的所有元素。 例如&#xff0c;匹配所有的段落元素<p>&#xff0c;并将其背景…

基于Java的厦门旅游电子商务预订系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 景点类型模块2.2 景点档案模块2.3 酒店管理模块2.4 美食管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学生表3.2.3 学生表3.2.4 学生表 四、系统展示五、核心代码5.1 新增景点类型5.2 查询推荐的…