先上代码
//java代码 spring自带MD5加密
public static void main(String[] args) {
try {
File file = new File("F:/tool.zip");
InputStream inputStream = new FileInputStream(file);
//使用spring自带工具
String fileMd5 = DigestUtils.md5DigestAsHex(inputStream);
System.out.println(fileMd5);
} catch (Exception e) {
e.printStackTrace();
}
}
//打印: ef41cf6e98483ffec9e0e5a21bee9363
// vue.js 代码 工具类 fileUtils.js
// npm install spark-md5
import SparkMD5 from 'spark-md5'
/**
* 获取文件MD5
* @param file 文件
* @param call 回调函数
*/
export const md5 = ({file, call}) => {
let fileRaw = file.raw
let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice
let fileReader = new FileReader()
let chunkSize = 5 * 1024 * 1024
let chunks = Math.ceil(file.size / chunkSize)
let currentChunk = 0
let spark = new SparkMD5.ArrayBuffer()
fileReader.onload = function (e) {
spark.append(e.target.result)
currentChunk++
if (currentChunk < chunks) {
loadNext()
} else {
let fileMd5 = spark.end()
call(fileMd5)
}
}
fileReader.onerror = function () {
console.warn('FileReader error.')
}
function loadNext () {
let start = currentChunk * chunkSize
let end = ((start + chunkSize) >= file.size) ? file.size : start + chunkSize
fileReader.readAsArrayBuffer(blobSlice.call(fileRaw, start, end))
}
loadNext()
}
// vue调用
import {md5} from '@/util/fileUtils'
...
onFileChange (file,fileList) {
md5({
file: file,
call: (val) => {
console.log(val)
}
})
}
...
// 打印: ef41cf6e98483ffec9e0e5a21bee9363
#
# Windows dos 自带命令
#
F:\>certutil -hashfile tool.zip MD5
MD5 的 tool.zip 哈希:
ef41cf6e98483ffec9e0e5a21bee9363
CertUtil: -hashfile 命令成功完成。
折腾了一晚上, 对您有用的话请点个赞