Created
February 19, 2019 19:00
-
-
Save chrisvoo/1f10f660ce93736996e80b2288d62cb4 to your computer and use it in GitHub Desktop.
Node.js: function to create an hash from a file (path or Buffer)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const crypto = require('crypto'); | |
const fs = require('fs'); | |
/** | |
* It calculates the hash of a file | |
* @param {string} hashName type of hash (md5, sha1, etc) | |
* @param {string|Stream} file a file's path or a readable stream | |
* if it's been already opened somewhere else | |
*/ | |
function getFileHash(hashName, file) { | |
return new Promise((resolve, reject) => { | |
const hash = crypto.createHash(hashName); | |
let stream; | |
if (typeof file === 'string') { | |
stream = fs.createReadStream(file); | |
} else if (file instanceof Readable) { | |
stream = file; | |
} else { | |
throw new Error('Second argument must be a string or a readable stream'); | |
} | |
stream.on('error', (err) => reject(err)); | |
stream.on('data', (chunk) => hash.update(chunk)); | |
stream.on('end', () => resolve(hash.digest('hex'))); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment