34 lines
1.1 KiB
JavaScript
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();
|
|
});
|
|
}
|