这个依然需要插件crypto-js

首先下载引入

import CryptoJs from "crypto-js";

话不多说直接上代码,首先是element的上传

         <el-upload
class="upload-demo"
drag
:http-request="calculate"
action=""
:limit="1"
:file-list="fileList"
:on-exceed="_change"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或<em>点击上传</em>
</div>
</el-upload>

其次定义方法

function hashFileInternal(file, alog) {
// 指定块的大小,这里设置为20MB,可以根据实际情况进行配置
const chunkSize = 2000 * 1024 * 1024;
let promise = Promise.resolve();
// 使用promise来串联hash计算的顺序。因为FileReader是在事件中处理文件内容的,必须要通过某种机制来保证update的顺序是文件正确的顺序
for (let index = 0; index < file.size; index += chunkSize) {
promise = promise.then(() =>
hashBlob(file.slice(index, index + chunkSize))
);
} /**
* 更新文件块的hash值
*/
function hashBlob(blob) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = ({ target }) => {
const wordArray = CryptoJs.lib.WordArray.create(target.result);
// 增量更新计算结果
alog.update(wordArray);
resolve();
};
reader.readAsArrayBuffer(blob);
});
} // 使用promise返回最终的计算结果
return promise.then(() => encHex.stringify(alog.finalize()));
} // 同时计算文件的sha256和md5,并使用promise返回
return Promise.all([
hashFileInternal(file, CryptoJs.algo.SHA256.create()),
hashFileInternal(file, CryptoJs.algo.MD5.create()),
]).then(([sha256, md5]) => {
this.filehash = sha256;
});
},

最后调用方法

calculate(param) {
this.hashFile(param.file).then();
},

然后就成功解决了压缩包编码错误

关于vue加element-ui上传文件获取文件的sha256的值 第二篇 更改压缩包编码错误的更多相关文章

  1. element ui 上传文件,读取内容乱码解决

    element ui 上传文件,读取内容乱码解决: 加第二个参数 reader.readAsText(file.raw,'gb2312'); <el-upload class="upl ...

  2. Element ui 上传文件组件(单文件上传) 点击提交 没反应

    element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...

  3. element UI 上传文件成功后 - 清空文件

    request({ url: '/jiekou', method: 'post', data }).then(res => { this.$message({ type: 'success', ...

  4. vue element ui 上传 请求接口

    在页面上 http-request: 覆盖默认的上传行为,可以自定义上传的实现 <el-upload  class="avatar-uploader"  action=&qu ...

  5. vue中element 的上传功能

    element 的上传功能 最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传upload 看完文档后,感觉有两种思路可以实现 基于before-upload :上传文件之前的钩子,参数为上传的 ...

  6. element upload上传前对文件专门bs64上传

    <!-- 文件上传 --> <template> <section class="file-upload"> <p class=" ...

  7. C#WPF做FTP上传下载获取文件列表

    Xaml.cs: using Microsoft.Win32;using System;using System.Collections.Generic;using System.IO;using S ...

  8. 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .

    平时根本没时间搞FTP什么的,现在这个项目需要搞FTP,为什么呢,我给大家说下项目背景,我们的一个应用程序上需要上传图片,但是用户部署程序的服务器上不让上传任何东西,给了我们一个FTP账号和密码,让我 ...

  9. vue实现图片的上传和删除

    目录 1 UI库使用ElementUI 2 后端使用Express + formidable模块 1 UI库使用ElementUI 安装ElementUI $ npm install --save-d ...

  10. SpringBoot 整合文件上传 elment Ui 上传组件

    SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...

随机推荐

  1. redis的主从复制master/slaver

    什么是Redis的复制 ​ 就是我们常说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 复制原理 Slave启动成 ...

  2. 看图对比Pytest、Unittest

  3. 基于Java+SpringBoot+Mysql实现的古诗词平台功能设计与实现四

    一.前言介绍: 1.1 项目摘要 随着信息技术的迅猛发展和数字化时代的到来,传统文化与现代科技的融合已成为一种趋势.古诗词作为中华民族的文化瑰宝,具有深厚的历史底蕴和独特的艺术魅力.然而,在现代社会中 ...

  4. ChatGPT:编程的 “蜜糖” 还是 “砒霜”?告别依赖,拥抱自主编程的秘籍在此!

    在当今编程界,ChatGPT 就像一颗耀眼却又颇具争议的新星,它对编程有着不可忽视的影响.但这影响就像一把双刃剑,使用不当,就可能让我们在编程之路上"受伤". 一.过度依赖 Cha ...

  5. 拯救php性能的神器webman-初入门

    无意间发现的这个神器webman,真是秋名山上的腾源拓海! 该框架是workerman下的一个web开发的生态,我们可以先看看这里workerman的官方网站. workerman早有耳闻,知道它蛮厉 ...

  6. apt安装后需要移除的问题

    之前记录了 apt-get remove 的命令,现在了解到原来还有 apt-get purge 的命令 这个命令可以清除配置数据 看来我们要转变一下,将来尽量用这个purge 了不然又使用清除 au ...

  7. Netty+Spring Boot 加持,解锁高性能 Web 应用

    MiniTomcat(https://github.com/daichangya/MiniTomcat) 这个项目是一个基于Netty的Java Web服务器,它提供了从简单HTTP服务器到集成Spr ...

  8. 什么是静态(static)?什么是静态方法,静态变量,静态块和静态类?

    本文由 ImportNew - 唐小娟 翻译自 Journaldev.如需转载本文,请先参见文章末尾处的转载要求. static是Java中的一个关键字,我们不能声明普通外层类或者包为静态的.stat ...

  9. 三、FreeRTOS学习笔记-系统配置

    FreeRTOSConfig.h配置文件作用:对FreeRTOS进行功能配置和裁剪,以及API函数的使能. 系统配置文件中主要是一些宏定义 相关宏定义可分为三类: 1."INCLUDE&qu ...

  10. 内网穿透之frp

    官网文档:https://gofrp.org 1 Frp介绍frp 是一个开源.简洁易用.高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议.frp 项目官网是 h ...