UNPKG

oss-upload.js

Version:

The browser directly uploads files to oss

56 lines (44 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fileMd5 = fileMd5; exports.stopMd5 = stopMd5; var _sparkMd = _interopRequireDefault(require("spark-md5")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var aborted = false; function fileMd5(file, md5Fn, progressFn) { var progress = 0; var currentChunk = 0; var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice; var chunkSize = 2097152; var chunks = Math.ceil(file.size / chunkSize); var spark = new _sparkMd.default.ArrayBuffer(); var reader = new FileReader(); 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) { md5Fn('aborted'); return; } if (currentChunk < chunks) { loadNext(); } else { md5Fn(null, spark.end()); } }; function loadNext() { var start = currentChunk * chunkSize; var end = start + chunkSize >= file.size ? file.size : start + chunkSize; reader.readAsArrayBuffer(blobSlice.call(file, start, end)); } } function stopMd5() { aborted = true; }