获取文件的md5值

JavaScript07

获取文件的md5值,第1张

此处我们需要用到一个spark-md5的js库类

把他安装到我们项目中: npm install spark-md5 --save

以下为我根据官方demo,改编成一个公用函数,并放到项目的crypto.util.js的文件,用来统一存放项目中需要用到的加密解密的方法

使用的时候,只需要引入该方法,即:

参考: spark-md5 npm官方地址

MD5中的MD代表Message Digest,就是信息摘要的意思,不过这个信息摘要不是信息内容的缩写,而是根据公开的MD5算法对原信息进行数学变换后得到的一个128位(bit)的特征码。

1、D5就是求字符串的md5,文件就是一个字符串;

2、前台目前就别考虑读文件内容了(大部分浏览器不行) 都让后台做;

可以直接看nodeclub源代码,如下:

var crypto = require('crypto')

exports.encrypt = function (str, secret) {

var cipher = crypto.createCipher('aes192’, secret)

var enc = cipher.update(str, 'utf8’, ‘hex’)

enc += cipher.final(‘hex’)

return enc

}

exports.decrypt = function (str, secret) {

var decipher = crypto.createDecipher('aes192’, secret)

var dec = decipher.update(str, 'hex’, ‘utf8’)

dec += decipher.final(‘utf8’)

return dec

}

exports.md5 = function (str) {

var md5sum = crypto.createHash(‘md5’)

md5sum.update(str)

str = md5sum.digest(‘hex’)

return str

}

exports.randomString = function (size) {

size = size || 6

var code_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789’

var max_num = code_string.length + 1

var new_pass = '’

while (size >0) {

new_pass += code_string.charAt(Math.floor(Math.random() * max_num))

size–

}

return new_pass

}

1、可以在内存存储所有文件的MD5值。具体的可以生成一个Map,key值为MD5,value为文件路径。当上传文件时,查看该文件的md5值是否存在于内存的Map,若不存在,则上传文件,同时更新该Map,将该文件存于Map中。否则不需要上传。

2、socket.io采用事件驱动。所以文件的上传的连接、结束以及传送数据都可以作为一个事件来处理。具体的处理可以看下formidable模块。