关于vue加element-ui上传文件获取文件的sha256的值 第二篇 更改压缩包编码错误
这个依然需要插件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的值 第二篇 更改压缩包编码错误的更多相关文章
- element ui 上传文件,读取内容乱码解决
element ui 上传文件,读取内容乱码解决: 加第二个参数 reader.readAsText(file.raw,'gb2312'); <el-upload class="upl ...
- Element ui 上传文件组件(单文件上传) 点击提交 没反应
element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...
- element UI 上传文件成功后 - 清空文件
request({ url: '/jiekou', method: 'post', data }).then(res => { this.$message({ type: 'success', ...
- vue element ui 上传 请求接口
在页面上 http-request: 覆盖默认的上传行为,可以自定义上传的实现 <el-upload class="avatar-uploader" action=&qu ...
- vue中element 的上传功能
element 的上传功能 最近有个需求,需要在上传文件前,可以进行弹窗控制是否上传upload 看完文档后,感觉有两种思路可以实现 基于before-upload :上传文件之前的钩子,参数为上传的 ...
- element upload上传前对文件专门bs64上传
<!-- 文件上传 --> <template> <section class="file-upload"> <p class=" ...
- C#WPF做FTP上传下载获取文件列表
Xaml.cs: using Microsoft.Win32;using System;using System.Collections.Generic;using System.IO;using S ...
- 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .
平时根本没时间搞FTP什么的,现在这个项目需要搞FTP,为什么呢,我给大家说下项目背景,我们的一个应用程序上需要上传图片,但是用户部署程序的服务器上不让上传任何东西,给了我们一个FTP账号和密码,让我 ...
- vue实现图片的上传和删除
目录 1 UI库使用ElementUI 2 后端使用Express + formidable模块 1 UI库使用ElementUI 安装ElementUI $ npm install --save-d ...
- SpringBoot 整合文件上传 elment Ui 上传组件
SpringBoot 整合文件上传 elment Ui 上传组件 本文章记录 自己学习使用 侵权必删! 前端代码 博主最近在学 elment Ui 所以 前端使用 elmentUi 的 upload ...
随机推荐
- Java 面向对象高级
文章目录 1.静态 1.1 static修饰成员变量 1.2 static修饰成员变量的应用场景 1.3 static修饰成员方法 1.4 工具类 1.5 static的注意事项 1.6 static ...
- SLS:整层剪掉!基于降维特征聚类的PETL模型剪枝新方法 | ECCV'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Straightforward Layer-wise Pruning for More Efficient Visual Adaptation ...
- Nuxt.js 应用中的 nitro:build:before 事件钩子详解
title: Nuxt.js 应用中的 nitro:build:before 事件钩子详解 date: 2024/11/4 updated: 2024/11/4 author: cmdragon ex ...
- Linux设置显示中文和设置字体
设置中文 一.查看当前使用的系统语言 1.登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 echo $LANG 2.查看安装的语言包 查看是否有中文语言包 ...
- Codeforces 2023/2024 A-H
题面 A B C D E F G H 难度:红 橙 黄 绿 蓝 紫 黑 黑 题解 A 题目大意: 输入 \(a\),\(b\),解不等式 \(b - 2x \le a - x (0 \le x \le ...
- 剖析Air724UG的硬件设计,还有大发现?01部分
一.绪论 Air724UG是一款基于紫光展锐UIS8910DM平台设计的LTE Cat 1无线通信模组.支持FDD-LTE/TDD-LTE的4G远距离通讯和Bluetooth近距离无线传输技术,支 ...
- 【更新日志】AI运动识别插件又双叕发布更新了,v1.5.4版已正式发布。
Ai运动识别插件可以为您的小程序赋于原生的人体检测.运动识别.姿态识别.运动计时计数AI能力,让您的小程序轻松实现AI健身.线上运动会.学生体测等场景,并拥有大量的用户案例,针对近期开发者的反馈,我们 ...
- mysql8可以创建虚拟列作为公式映射字段
普通的表 加个字段 此时再查 想改这个虚拟字段? 没门,他不能被修改.只能改那个被映射的原字段 我们看看表结构定义 好了,明白了,你就是个影分身!
- nginx之常见错误
在此只介绍源码安装nginx的时候,发生的一些常见的错误 1. nginx访问出现File not found 1) php-fpm找不到SCRIPT_FILENAME中执行的PHP文件 更改配置文件 ...
- 如何正确使用 RMQ
序列分块.设块长为 \(B\).每块预处理出最大值.对于询问 \([l, r]\),答案就是整块最大值和散块最大值拼起来.答案显然是 \(O(n) \sim O(\dfrac{n}{B} + B)\) ...