我必须从前端上传文件并计算文件的md5哈希值。 我试图使用crypto.js生成md5,但对于图像,它给了我错误的md5。 我看到一个名为onlinemd5.com的网站,这正是我所需要的。
任何人都可以帮我如何使用javascript计算文件(文本文件,图像,视频等)的md5哈希值? 是否可以从http://onlinemd5.com下载代码并实现它?
注意:我尝试了How to calculate md5 hash of a file using javascript中的一些建议,但没有用。
$scope.upld = function(element){
$scope.files = element.files;
var file = $scope.files[0];
var reader = new FileReader();
reader.onload = function(){
$scope.md5_val = CryptoJS.MD5(reader.result);
$scope.upload_file();
$scope.$apply();
};
reader.readAsBinaryString(file);
};
crypto.js没有正确计算图像md5。我没有尝试过sparkmd5 js。
答案 0 :(得分:4)
我使用reader.readAsArrayBuffer()
:
$(inputElement).change(
function () {
var reader = FileReader();
reader.addEventListener(
'load',
function () {
var wordArray = CryptoJS.lib.WordArray.create(this.result);
console.log(CryptoJS.MD5(wordArray));
}
);
reader.readAsArrayBuffer(this.files[0]);
}
);
我不得不从CryptoJS添加额外的依赖项:http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/lib-typedarrays-min.js
答案 1 :(得分:2)
我使用了来自https://github.com/satazor/SparkMD5的spark-md5.js 它非常棒且非常快。如果某人试图计算任何上传文件的md5,这是最佳解决方案。