前后端java js 获取某文件一致的MD5

mac2024-01-30  32

先上代码

//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 命令成功完成。

折腾了一晚上, 对您有用的话请点个赞

最新回复(0)