Javascript 如何检查两个文件是否相同?
我想知道是否有一种方法可以判断两个文件是相同的 我正在使用一个解决方案,但它似乎不是很有效,我下载了每个解决方案的第一部分,然后将接收到的数据转换为base64,最后对它们进行比较 但我面临一个问题,例如,当两个文件(a.html和b.html)的前半部分相同时,生成的签名是相同的,即使最后一部分不同。 我用来下载文件预览的代码Javascript 如何检查两个文件是否相同?,javascript,node.js,express,Javascript,Node.js,Express,我想知道是否有一种方法可以判断两个文件是相同的 我正在使用一个解决方案,但它似乎不是很有效,我下载了每个解决方案的第一部分,然后将接收到的数据转换为base64,最后对它们进行比较 但我面临一个问题,例如,当两个文件(a.html和b.html)的前半部分相同时,生成的签名是相同的,即使最后一部分不同。 我用来下载文件预览的代码 https.get(url, function(res) { var chunks = []; if (res.statusCode !
https.get(url, function(res) {
var chunks = [];
if (res.statusCode !== 200) {
responce.jsonp(404, null);
}
res.on('data', function(chunk) {
chunks.push(chunk);
var jsfile = new Buffer.concat(chunks).toString('base64');
jsfile = jsfile.substring(0, 100);
responce.header('Access-Control-Allow-Origin', '*');
responce.header('Access-Control-Allow-Headers', 'X-Requested-With');
responce.header('content-type', 'application/pdf');
responce.send(200, jsfile);
});
我认为您应该使用md5哈希进行文件比较。查看此信息:我认为您不应该在2014年推荐MD5。问题不在于散列,而在于我必须下载整个文件才能判断它们是否相同。例如,如果我有一个大小为50mb的pdf文件,我必须等待很长时间,直到下载完成。这是一个不可避免的问题。如果您同时查看50mb文件,我强烈建议您使用哈希方法,因为您需要在内存中存储这两个副本来比较base64。您可以发布代码吗?听起来你好像有虫。如果您确实对所有文件数据进行了base64处理,然后比较了整个base64字符串,那么它们肯定会有所不同。这只是代码的一个片段,但您不会等到收到整个响应后再发回数据。res.on('data')将被多次调用,您需要等到res.on('end')…才能知道所有数据都在其中。如果我有一个大文件(例如50MB),我使用此方法可以将等待时间减到最少我会等到它完成,这至少需要5分钟。如果你没有完整的文件来比较,你能告诉他们是否不同吗?你也可以查看头来检查etag,但它不是100%可靠。另外,如果文件在s3或类似的服务中,http的头方法可能会给你一个文件的md5