SM4国密
Links:
1. 准备
1
npm i browser-md5-file gm-crypto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import BMF from 'browser-md5-file';
const file = e.target.files[0];
const bmf = new BMF();
bmf.md5(
file,
(err, md5) => {
console.log('err:', err);
console.log('md5 string:', md5); // 97027eb624f85892c69c4bcec8ab0f11
},
progress => {
console.log('progress number:', progress);
},
);
2. 用户选择文件
获取 file 如下信息 :
文件大小( size ) ,文件类型( mime-type ),文件名( filename ),文件后缀( .ext ),文件的 md5
3. 请求 Java 签名
请求签名时需要发送 2 中的信息,获得签名 和 token。
token 中会存储:
文件大小( size ) ,文件类型( mime-type ),文件名( filename ),文件后缀( .ext ),文件的 md5 等信息
token 采用对称加密(国密 SM4),前端在必要时需要对称解密,以获取到信息。
4. 调用 ali-oss 服务上传
正常上传
秒传 (md5)
上传成功服务端返回访问地址,该地址会进行自动重定向到真实的 OSS 资源路径。
(因为文件每次上传都会产生唯一路径,重定向是为了在前端显示静态地址但又不影响正常访问)
本文由作者按照 CC BY 4.0 进行授权