У меня есть функция для получения sha256 и байтового размера ReadStream, это мой код:
import * as fs from 'fs';
export function streamToMeta(streamFile: fs.ReadStream): Promise<{size: number, sha256: string}> {
return new Promise((resolve, reject) => {
const hash = crypto.createHash('sha256');
hash.setEncoding('hex');
let size = 0;
streamFile.on('data', (chunk) => {
size += chunk.length;
});
streamFile.on('end', () => {
hash.end();
resolve({size: size, sha256: hash.read()});
});
streamFile.on('error', (error) => {
reject(error);
});
streamFile.pipe(hash);
});
}
Функция работает (возвращает информацию), но «поток» кажется поврежденным или "странное" состояние, и если я попытаюсь загрузить в s3 с помощью:
await S3.upload({Bucket: bucket, Key: key, Body: stream}).promise();
, загрузка не будет завершена ... без ошибок, ничего ... но если я не использую свою функцию streamToMeta (), загрузка работает.
Что я делаю не так в streamToMeta ()?