之前写过一篇文章用js计算一个文件的MD5值。下面介绍服务器如何使用Node.js计算文件的MD5值。引入依赖constpath=require('path');constfs=require('fs');constcrypto=require('crypto');本文使用crypto计算文件的MD5值。计算小文件的MD5值constbuffer=fs.readFileSync(path.join(__dirname,'1.mp4'));consthash=crypto.createHash('md5');hash.update(buffer,'utf8');constmd5=hash.digest('hex');console.log(md5);首先使用fs方法读取文件获取文件的二进制数据,然后使用crypto.createHash方法创建一个Hash实例,参数为md5,然后使用hash.update方法生成计算出的hash为二进制文件,第二个参数是编码格式,这里是'utf-8',最后调用hash.digest生成MD5值。运行程序,查看控制台:是文件的MD5值。计算大文件的MD5值,但是假设读取的是大文件,受限于服务器性能,MD5的计算速度会大大降低。这时候可以使用获取可读流的方法来读取文件。conststream=fs.createReadStream(path.join(__dirname,'1.mp4'));consthash=crypto.createHash('md5');stream.on('data',chunk=>{hash.update(chunk,'utf8');});stream.on('end',()=>{constmd5=hash.digest('hex');console.log(md5);});先获取文件可读Stream,然后使用crypto.createHash方法创建Hash实例,参数为md5。然后当流接收数据时,使用hash.update方法为二进制文件生成计算的哈希值。第二个参数是编码格式,这里使用'utf-8'。最后,当流被读取时,调用hash.digest生成MD5值。运行程序,查看控制台:与直接同步读取文件计算出的MD5值相同。如果在开发过程中需要计算文件的MD5值,可以根据文件大小,选择以上两种方式中的一种来使用。相关文章:前端使用js计算文件的MD5值
