Node.JS: моя функция повредила ReadStream (не могу загрузить на S3) - PullRequest
0 голосов
/ 06 мая 2020

У меня есть функция для получения 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 ()?

...