如何使用javascript计算文件的md5哈希值

如何使用javascript计算文件的md5哈希值

有没有办法在使用Javascript上传到服务器之前计算文件的MD5哈希值?



拉丁的传说
浏览 4067回答 3
3回答

慕田峪4524236

虽然有MD5算法的JS实现,但旧版浏览器通常无法从本地文件系统读取文件。我在2009年写过。那么新的浏览器呢?使用支持FileAPI的浏览器,您*可以*读取文件的内容&nbsp;- 用户必须选择它,使用<input>元素或拖放。截至2013年1月,以下是主要浏览器的堆叠方式:FF 3.6支持FileReader,FF4支持更多基于文件的功能Chrome自版本7.0.517.41起支持FileAPIInternet Explorer 10具有部分FileAPI支持Opera 11.10&nbsp;部分支持FileAPISafari - 我找不到一个好的官方来源,但这个网站建议从5.1获得部分支持,完全支持6.0。另一篇文章报道了旧版Safari的一些不一致之处

守候你守候我

使用CryptoJS的MD5函数和HTML5 FileReader API计算MD5哈希非常容易。以下代码段显示了如何读取二进制数据并从已拖入浏览器的图像中计算MD5哈希值:var&nbsp;holder&nbsp;=&nbsp;document.getElementById('holder');holder.ondragover&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;return&nbsp;false;};holder.ondragend&nbsp;=&nbsp;function()&nbsp;{ &nbsp;&nbsp;return&nbsp;false;};holder.ondrop&nbsp;=&nbsp;function(event)&nbsp;{ &nbsp;&nbsp;event.preventDefault(); &nbsp;&nbsp;var&nbsp;file&nbsp;=&nbsp;event.dataTransfer.files[0]; &nbsp;&nbsp;var&nbsp;reader&nbsp;=&nbsp;new&nbsp;FileReader(); &nbsp;&nbsp;reader.onload&nbsp;=&nbsp;function(event)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;binary&nbsp;=&nbsp;event.target.result; &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;md5&nbsp;=&nbsp;CryptoJS.MD5(binary).toString(); &nbsp;&nbsp;&nbsp;&nbsp;console.log(md5); &nbsp;&nbsp;}; &nbsp;&nbsp;reader.readAsBinaryString(file);};我建议添加一些CSS来查看拖放区域:#holder&nbsp;{ &nbsp;&nbsp;border:&nbsp;10px&nbsp;dashed&nbsp;#ccc; &nbsp;&nbsp;width:&nbsp;300px; &nbsp;&nbsp;height:&nbsp;300px;}#holder.hover&nbsp;{ &nbsp;&nbsp;border:&nbsp;10px&nbsp;dashed&nbsp;#333;}有关拖放功能的更多信息,请访问:File API和FileReader我在Google Chrome版本32中测试了该示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript