各位老哥,我在做一个js切片上传文件,前端这边传递一个文件的唯一标识,我用了md5后发现不同的视频打印出的加密值都相同?这就很尴尬了,谷歌许久未曾解惑!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.min.js"></script>
</head>
<body>
<form action="">
<input type="file" id="test" multiple="multiple"/>
</form>
<script>
window.onload=function(){
let upInput=document.getElementById('test');
upInput.addEventListener('change',function(){
var file = this.files[0];
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.addEventListener("load", function(e) {
var res = e.target.result;
console.log(res,'res')
var md5Info=md5(res)
console.log(md5Info,'md5Info')
});
})
}
</script>
</body>
</html>
这是临时的demo,各位老哥可以运行看下。
blueimp-md5.js
res
是一个ArrayBuffer
,md5(res)
意思是md5(res.toString())//md5('[object ArrayBuffer]')
,所以都一样。要么转成
string
,要么使用支持ArrayBuffer
的md5
模块。