基于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文件

  1. 引入 spark-md5,如果不频繁使用的话无需在main.js中使用
import SparkMD5 from 'spark-md5'
  1. 利用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值并上传相关推荐

  1. window 获取文件md5值dos 脚本

    window 获取文件md5值dos 脚本 将下面脚本内容写入md5sum.bat中: @echo offrem path: %UserProfile%\AppData\Roaming\Microso ...

  2. C# 获取文件MD5值的方法

    可用于对比文件是否相同 1 /// <summary> 2 /// 获取文件MD5值 3 /// </summary> 4 /// <param name="f ...

  3. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  4. Java 获取文件md5值校验文件

    假如我们想校验两个文件网络传输中是否改变了,或者校验两个文件是否一致可以使用md5校验. 代码: import java.io.FileInputStream; import java.io.Inpu ...

  5. 浏览器获取文件MD5值

    能做到大文件md5值的获取,但是文件越大耗时越久. spark-md5工具包:https://download.csdn.net/download/weixin_36524613/10545957 & ...

  6. Qt获取文件md5值

    md5做为文件完整性验证的手段之一,以下介绍Qt获取文件md5值得方式: #include <QCryptographicHash> QString Download::getFileMD ...

  7. Element UI结合vue-cropper打造图片裁剪上传组件

    效果显示 引用vue-cropper npm install vue-cropperyarn add vue-cropper 创建组件文件夹 上传按钮组件 index.vue <template ...

  8. js获取文件MD5值

    要在web页面中计算文件的md5值,还好这个项目是只需兼容现代浏览器的,不然要坑死了. 其实对文件进行md5,对于后端来说是及其简单的.比如使用Node.js,只要下面几行代码就可以了: var fs ...

  9. element ui 获取文件的路径_win10使用WinAppDriver实现UI自动化

    win10使用WinAppDriver实现UI自动化 WinAppDriver说明 WinAppDriver(Windows Application Driver)是一个类似Selenium的UI自动 ...

最新文章

  1. java 内部类的理解
  2. Openfire服务器的安装部署
  3. python3 asyncio 协程模块
  4. spring-boot-starter-actuator(健康监控)配置和使用
  5. C++的inline函数
  6. 【暴力】I Liked Matrix!
  7. ClickHouse表引擎
  8. java 怎么使用同名类_java两个不同名类 在里面建立两个同名的类 怎么破
  9. 【MySQL】MySQL 查询优化器的提示(hint)
  10. SQL ——利用窗口函数的T-SQL解决方案
  11. 如何利用计算机英文缩写,【英文缩写】有关计算机的英文都在这儿
  12. Mac下载配置aria2和baidudl
  13. 软件教程给MyEclipse 10增加SVN功能
  14. 传感器基础结构与通信原理
  15. JAVA数据库连接池的工作机制
  16. linux android投屏,Github开源Android投屏软件——Scrcpy
  17. 如何视频录制电脑里播放的视频
  18. 【流程向】模型复原与Unity渲染
  19. 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
  20. IT内部控制体系建设方案-从IT角度解读《企业内部控制规范》

热门文章

  1. 精通吉他弹唱——使用节奏变化弹好chord谱
  2. 操作系统原理_田丽华(11)大容量存储
  3. 图片太大不能上传怎么办?
  4. (八十)第五章编程练习
  5. ElasticSearch安装与使用
  6. 手机服务器缓存在什么位置,手机服务器缓存设置方法
  7. Android:使用MuPdf开源库阅读PDF文件
  8. 【毕业设计】基于Stm32的家庭气象仪 天气监控系统 - 物联网 单片机 嵌入式
  9. 最牛支付工具问世,支付宝慌了?
  10. ubuntu20.04搭建QGC4.2编译环境