前端对文件内容解析生成特定算法哈希值方法
# 例子
商业秘密项目中,用户选择的特殊文件要生成特定的哈希值,读取文件内容实现 下面是js方法 用了el-upload获取的file
const beforeAvatarUpload = async (file) => {
if (fileList.value.length == 1) {
ElMessage({
message: "最多允许上传1个文件",
type: "error"
})
return false
} else {
const hash = computeSHA256(file)
return true
}
}
// 计算文件的SHA-256哈希值
const computeSHA256 = async (file) => {
// // 使用 FileReader 将文件读取为 ArrayBuffer
const arrayBuffer = await file.arrayBuffer()
// // 使用 crypto.subtle 计算 SHA-256 哈希
const hashBuffer = await crypto.subtle.digest("SHA-256", arrayBuffer)
// // 将 ArrayBuffer 转换为 16 进制字符串
return bufferToHex(hashBuffer)
}
const bufferToHex = (buffer) => {
const byteArray = new Uint8Array(buffer)
const hexArray = Array.from(byteArray).map((byte) => byte.toString(16).padStart(2, "0"))
return hexArray.join("")
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
上次更新: 2024/12/30, 14:58:53