A Transform stream that calculates Etag/S3 MD5 sum. Uses the same algorithm that S3 uses to calculate the ETag
.
This is especially useful for verifying large files uploaded using multipart S3 API, enabling use of createReadStream
to keep memory usage low.
npm install etag-stream
const ETagStream = require('etag-stream');
const stream = new ETagStream();
let result = null;
stream
.on('error', e => {
reject(e);
})
.on('etag', data => {
result = data.toString();
})
.on('data', data => {
// data passes through if you need to do more!
})
.on('finish', () => {
resolve(result);
});
createReadStream(local).pipe(stream);
ETags compatible with s3, thanks to the author of this post for the breakdown of the algorithm.