1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- export default class FileOpr {
- _file: File | any = null;
- _defaultChunkSize: number = 1024 * 1024;
- _minChunkSize: number = 0;
- _partsNumber: number = 0;
- constructor (file: File) {
- this._file = file;
- if (Math.ceil(file.size / this._defaultChunkSize) <= 1) {
- this._minChunkSize = 500 * 1024;
- this._partsNumber = Math.ceil(file.size / this._minChunkSize);
- } else if (Math.ceil(file.size / this._defaultChunkSize) < 10000) {
- this._partsNumber = Math.ceil(file.size / this._defaultChunkSize);
- } else {
- this._partsNumber = 10000;
- this._minChunkSize = Math.ceil(this._file.size / 10000);
- }
- }
- _fileSlice (sliceIndex: number) {
- const partSize = this._minChunkSize === 0 ? this._defaultChunkSize : this._minChunkSize,
- _start = sliceIndex * partSize,
- _end = _start + partSize > this._file.size ? this._file.size : _start + partSize;
- const partBlob = this._file.slice(_start, _end);
- return {
- file: partBlob as Blob,
- partNumber: sliceIndex + 1,
- partSize: (partBlob as Blob).size
- };
- }
- getSliceArr (startPartNumber: number, num: number) {
- const sliceArr: any[] = [];
- while (sliceArr.length < num) {
- sliceArr.push(this._fileSlice(startPartNumber + sliceArr.length - 1));
- }
- return sliceArr;
- }
- getPartsNumber () {
- return this._partsNumber;
- }
- }
|