> 文章列表 > 获取文件MD5小案例(未拆分文件)

获取文件MD5小案例(未拆分文件)

获取文件MD5小案例(未拆分文件)

文章目录

    • 前端获取MD5
    • 后端获取MD5

前端获取MD5

1、引入js

<script src="js/spark-md5.min.js" type="text/javascript"></script>

注:spark-md5库GitHub链接
2、这里是一个按钮和被隐藏调的<input/>标签

	<body><button onclick="func()">按钮</button><input id="file" type="file" onchange="funcChange()" style="display: none;" /></body>

3、在按钮点击事件中触发<input/>click事件,打开文档选择文件,选择后会触发onchange事件

	function func() {document.getElementById('file').click();};

4、获取文件,计算MD5值

	function funcChange() {var file = document.getElementById('file').files[0];var spark = new SparkMD5.ArrayBuffer();var fileReader = new FileReader();fileReader.readAsArrayBuffer(file)fileReader.onload = function(e){spark.append(e.target.result);console.info('computed hash', spark.end());}};

完整案例:

<!DOCTYPE html>
<html><head><script src="js/spark-md5.min.js" type="text/javascript"></script><script>/*** file_hash5*/function fileHash(file) {console.log("e.target.result")var spark = new SparkMD5.ArrayBuffer();var fileReader = new FileReader();fileReader.readAsArrayBuffer(file)fileReader.onload = function(e){spark.append(e.target.result);console.info('computed hash', spark.end());}}function funcChange() {var file = document.getElementById('file').files[0];fileHash(file)}/*** func函数*/function func() {document.getElementById('file').click();};</script></head><body><button onclick="func()">按钮</button><input id="file" type="file" onchange="funcChange()" style="display: none;" /></body>
</html>

后端获取MD5

        try {File file = new File("文件路径");FileInputStream fileInputStream = new FileInputStream(file);byte[] bytes = fileInputStream.readAllBytes();MessageDigest md = MessageDigest.getInstance("MD5");byte[] digest = md.digest(bytes);StringBuffer hexValue = new StringBuffer();for (int i = 0; i < digest.length; i++) {int val = ((int) digest[i]) & 0xff;if (val < 16) {hexValue.append("0");}hexValue.append(Integer.toHexString(val));}System.out.println(hexValue);} catch (NoSuchAlgorithmException | IOException e) {e.printStackTrace();}