oss-upload-browser
Version:
oss-browser文件上传
55 lines (41 loc) • 1.36 kB
JavaScript
;
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;