前端获取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();
}