文章

SM4国密

Links:

标准的 MIME 类型

国密加解密SM4的NPM包

获取文件MD5的NPM包

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 服务上传

  1. 正常上传

  2. 秒传 (md5)

  3. 上传成功服务端返回访问地址,该地址会进行自动重定向到真实的 OSS 资源路径。

    因为文件每次上传都会产生唯一路径,重定向是为了在前端显示静态地址但又不影响正常访问

本文由作者按照 CC BY 4.0 进行授权