oak-general-business/lib/utils/files/md5.native.js

34 lines
1.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateFileMd5 = calculateFileMd5;
const tslib_1 = require("tslib");
const spark_md5_1 = tslib_1.__importDefault(require("spark-md5"));
function calculateFileMd5(file) {
return new Promise((resolve, reject) => {
const chunkSize = 2097152;
const chunks = Math.ceil(file.size / chunkSize);
let currentChunk = 0;
const spark = new spark_md5_1.default.ArrayBuffer();
const fileReader = new FileReader();
fileReader.onload = function (e) {
spark.append(e.target?.result);
currentChunk++;
if (currentChunk < chunks) {
loadNext();
}
else {
resolve(spark.end());
}
};
fileReader.onerror = function () {
reject(new Error('Failed to read file'));
};
function loadNext() {
const start = currentChunk * chunkSize;
const end = Math.min(start + chunkSize, file.size);
fileReader.readAsArrayBuffer(file.slice(start, end));
}
loadNext();
});
}