Как получить MD5 файла, используя base64 кодировку файла в js (для проверки загрузки s3) - PullRequest
1 голос
/ 14 апреля 2020

Я хочу загрузить файл в s3, и если я правильно понимаю, s3 возвращает мне ETag для файла, который в основном составляет md5 га sh файла, который я загрузил. Я хочу проверить, совпадает ли он с моим локальным ха sh, чтобы увидеть, правильно ли он загружен.

Но я не смог найти хороший пример, который использует base64 или буфер файла для получения md5 файла

Пока у меня есть это:

const result = await s3.putObject({
    Bucket: lambdaConfig.s3BucketName, 
    Key: filePath,
    Body:new Buffer.from(fileBase64,'base64'),
    ContentType: mimeType,
    Metadata: {},
}).promise();

const localHash = // Turn fileBase64 to md5 hash
const remoteHash = JSON.parse(result.ETag);

if( remoteETag === localHash ) {
    // Success.
}

Как я могу получить localHa sh из fileBase64?

1 Ответ

2 голосов
/ 14 апреля 2020

Вы бы использовали встроенный crypto API для вычисления хэшей в node.js.

const crypto = require('crypto');
//...
const etag = crypto.createHash('md5');
// .update means to add to the buffer, you can call .update multiple times
etag.update(Buffer.from(fileBase64, 'base64'));
// .digest(encoding) gives you the computed value of buffer
const localHash = etag.digest('hex');
console.log(`localHash: ${localHash}`);

И в качестве подсказки, использование new с Buffer - это устарела, см. документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...