UNPKG

oss-upload-browser

Version:
55 lines (41 loc) 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stopMd5 = exports.fileMd5 = void 0; var _sparkMd = _interopRequireDefault(require("spark-md5")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var aborted = false; var fileMd5 = function fileMd5(file, md5Fn, progressFn) { var progress = 0; var currentChunk = 0; var blobSlice = File.prototype.slice; var chunkSize = 2097152; var chunks = Math.ceil(file.size / chunkSize); var spark = new _sparkMd["default"].ArrayBuffer(); var reader = new FileReader(); var loadNext = function loadNext() { var start = currentChunk * chunkSize; var end = start + chunkSize >= file.size ? file.size : start + chunkSize; reader.readAsArrayBuffer(blobSlice.call(file, start, end)); }; loadNext(); reader.onloadend = function (e) { spark.append(e.target.result); // Append array buffer currentChunk++; progress = currentChunk / chunks; if (progressFn && typeof progressFn === 'function') progressFn(progress); if (aborted) return md5Fn('aborted'); if (currentChunk < chunks) { loadNext(); } else { md5Fn(null, spark.end()); } ; }; }; exports.fileMd5 = fileMd5; var stopMd5 = function stopMd5() { aborted = true; }; exports.stopMd5 = stopMd5;