nodejs怎样获取一个上传文件的MD5码? 25
如题,1.我现在做了个文件服务器,从页面上传来的文件,希望获取他的MD5码来识别服务器是否已经存在这个数据.怎么破?2.如果希望利用socket.io来上传文件怎么做?前...
如题,
1.我现在做了个文件服务器,从页面上传来的文件,希望获取他的MD5码来识别服务器是否已经存在这个数据.
怎么破?
2.如果希望利用socket.io来上传文件怎么做?前后台.
多谢. 展开
1.我现在做了个文件服务器,从页面上传来的文件,希望获取他的MD5码来识别服务器是否已经存在这个数据.
怎么破?
2.如果希望利用socket.io来上传文件怎么做?前后台.
多谢. 展开
3个回答
推荐于2018-03-28
展开全部
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、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;
};
展开全部
你写JS 在前台处理该文件,获得 MD5值 ,上传服务器进行查询,如果有,就提示上传成功,没有就 继续上传。其实 AJAX就可以了吧,貌似不需要socket.io...如果用的话,表示没怎么看,但是应该很简单吧
追问
但是首先上传的时候我要保存MD5查询的时候才能用啊.所以后台也要取的
前台js可以获取文件的md5?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、可以在内存存储所有文件的MD5值。具体的可以生成一个Map,key值为MD5,value为文件路径。当上传文件时,查看该文件的md5值是否存在于内存的Map,若不存在,则上传文件,同时更新该Map,将该文件存于Map中。否则不需要上传。
2、socket.io采用事件驱动。所以文件的上传的连接、结束以及传送数据都可以作为一个事件来处理。具体的处理可以看下formidable模块。
2、socket.io采用事件驱动。所以文件的上传的连接、结束以及传送数据都可以作为一个事件来处理。具体的处理可以看下formidable模块。
更多追问追答
追问
前台除了html5和flash还有没有其他办法获取文件的md5?
后台保存了可是前台没有的话也是没办法去匹配的啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询