基于vue框架下使用Element-UI获取文件MD5值并上传
基于vue框架下使用Element-UI获取文件MD5值并上传
使用插件: spark-md5
.vue页面
<el-uploadclass="avatar-uploader idcard":action="imgdataUploadUrl"ref="frontImg":data="imgdata":show-file-list="false":auto-upload="false" :on-success="handleAvatarSuccess":before-upload="beforeImgUpload":on-change="onFrontImgChange"><img v-if="persform.frontImg" :src='getimage(persform.frontImg)' class="avatar"><img v-else src="@/assets/Images/idcard1.png" class="avatar"><p style="margin:0" class="sp-99">正面</p>
</el-upload>
因为API接口上传需要文件的md5及后缀名,所以绑定:data = imgdata
来携带请求参数。文件md5值在:on-change
的钩子函数中获取并赋值到imgdata
中。
标与之对应的.js文件
- 引入 spark-md5,如果不频繁使用的话无需在
main.js
中使用
import SparkMD5 from 'spark-md5'
- 利用element-ui上传组件中的
on-change
来监听文件,在文件发生改变时计算文件的md5值
onFrontImgChange:function(file, fileList){//console.log(file)const _this = this var fileReader = new FileReader();//此处打印file可看到file下的raw为文件属性var dataFile = file.raw;let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlicevar spark = new SparkMD5.ArrayBuffer();//获取文件二进制数据fileReader.readAsArrayBuffer(dataFile)//异步执行函数fileReader.onload = function(e){spark.append(e.target.result);var md5 = spark.end()console.log(md5)//此处this指向发生改变,需提前声明const _this = this_this.imgdata.md5 = md5; //此处是将文件的md5值放入imgdata中//上传图片,如手动上传可不在此处执行_this.upload('frontImg')}
},
打印lile:
此处需要注意的是fileReader.onload
为异步执行函数,如果上传设置的是自动上传的话需要在.vue文件的<el-upload>
中设置禁用自动上传,然后在fileReader.onload
函数中执行异步操作后调用自定义上传函数upload
,在外部调用的话imgdata
属性中无md5值。手动点击上传就无需考虑了。
upload函数 obj为<el-upload>
插件中绑定的ref
属性
//文件上传触发函数
upload:function(obj){this.$refs[obj].submit();
},
附加说明
网上有些方法基本思路与上述方法一致,但需要注意的是有些在获取文件二进制数据时用的是fileReader.readAsBinaryString
onFrontImgChange:function(file, fileList){const _this = this //this指向问题var fileReader = new FileReader();var dataFile = file.raw;//console.log(file)let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlicevar spark = new SparkMD5;fileReader.readAsBinaryString(dataFile)//异步执行函数fileReader.onload = function(e){spark.appendBinary(e.target.result);var md5 = spark.end()//console.log(md5)_this.imgdata.md5 = md5;_this.upload('frontImg')}
},
此方法也可获取文件的md5值,但是fileReader.readAsBinaryString
方法在17年就已废除,在IE上或报错对象不支持“fileReader.readAsBinaryString”属性或方法
。所以如果要考虑IE兼容的话尽量使用readAsArrayBuffer
同时请注意两种方法的不同部分代码需要修改,比较上述代码便知。
基于vue框架下使用Element-UI获取文件MD5值并上传相关推荐
- window 获取文件md5值dos 脚本
window 获取文件md5值dos 脚本 将下面脚本内容写入md5sum.bat中: @echo offrem path: %UserProfile%\AppData\Roaming\Microso ...
- C# 获取文件MD5值的方法
可用于对比文件是否相同 1 /// <summary> 2 /// 获取文件MD5值 3 /// </summary> 4 /// <param name="f ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- Java 获取文件md5值校验文件
假如我们想校验两个文件网络传输中是否改变了,或者校验两个文件是否一致可以使用md5校验. 代码: import java.io.FileInputStream; import java.io.Inpu ...
- 浏览器获取文件MD5值
能做到大文件md5值的获取,但是文件越大耗时越久. spark-md5工具包:https://download.csdn.net/download/weixin_36524613/10545957 & ...
- Qt获取文件md5值
md5做为文件完整性验证的手段之一,以下介绍Qt获取文件md5值得方式: #include <QCryptographicHash> QString Download::getFileMD ...
- Element UI结合vue-cropper打造图片裁剪上传组件
效果显示 引用vue-cropper npm install vue-cropperyarn add vue-cropper 创建组件文件夹 上传按钮组件 index.vue <template ...
- js获取文件MD5值
要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5,对于后端来说是及其简单的.比如使用Node.js,只要下面几行代码就可以了: var fs ...
- element ui 获取文件的路径_win10使用WinAppDriver实现UI自动化
win10使用WinAppDriver实现UI自动化 WinAppDriver说明 WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动 ...
最新文章
- java 内部类的理解
- Openfire服务器的安装部署
- python3 asyncio 协程模块
- spring-boot-starter-actuator(健康监控)配置和使用
- C++的inline函数
- 【暴力】I Liked Matrix!
- ClickHouse表引擎
- java 怎么使用同名类_java两个不同名类 在里面建立两个同名的类 怎么破
- 【MySQL】MySQL 查询优化器的提示(hint)
- SQL ——利用窗口函数的T-SQL解决方案
- 如何利用计算机英文缩写,【英文缩写】有关计算机的英文都在这儿
- Mac下载配置aria2和baidudl
- 软件教程给MyEclipse 10增加SVN功能
- 传感器基础结构与通信原理
- JAVA数据库连接池的工作机制
- linux android投屏,Github开源Android投屏软件——Scrcpy
- 如何视频录制电脑里播放的视频
- 【流程向】模型复原与Unity渲染
- 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
- IT内部控制体系建设方案-从IT角度解读《企业内部控制规范》