diff --git a/src/utils/uploader.ts b/src/utils/uploader.ts index 4e026b0..2bbddbb 100644 --- a/src/utils/uploader.ts +++ b/src/utils/uploader.ts @@ -32,8 +32,9 @@ export async function uploadFile(file: File, options: UploadFileOptions = {}): P bizType }) const info = initRes.data + const chunkSize = Number(info.chunkSize) options.onSession?.(info.uploadId) - const total = Math.max(info.totalChunks, 1) + const total = Math.max(Number(info.totalChunks), 1) const pending: number[] = Array.from({ length: total }, (_, index) => index) let finished = 0 @@ -41,8 +42,8 @@ export async function uploadFile(file: File, options: UploadFileOptions = {}): P for (;;) { const index = pending.shift() if (index === undefined) return - const start = index * info.chunkSize - const chunk = file.slice(start, Math.min(start + info.chunkSize, file.size)) + const start = index * chunkSize + const chunk = file.slice(start, Math.min(start + chunkSize, file.size)) await uploadChunkApi(info.uploadId, index, chunk, file.name) finished += 1 onProgress?.(Math.min(95, Math.round((finished / total) * 95))) @@ -68,7 +69,8 @@ export async function resumeUpload( ): Promise { const { concurrency = 3, onProgress } = options const progress = (await getUploadProgressApi(uploadId)).data - const total = Math.max(progress.totalChunks, 1) + const chunkSize = Number(progress.chunkSize) + const total = Math.max(Number(progress.totalChunks), 1) const received = Math.min(progress.receivedChunks || 0, total) const pending: number[] = [] for (let index = received; index < total; index += 1) { @@ -81,8 +83,8 @@ export async function resumeUpload( for (;;) { const index = pending.shift() if (index === undefined) return - const start = index * progress.chunkSize - const chunk = file.slice(start, Math.min(start + progress.chunkSize, file.size)) + const start = index * chunkSize + const chunk = file.slice(start, Math.min(start + chunkSize, file.size)) await uploadChunkApi(uploadId, index, chunk, file.name) finished += 1 onProgress?.(Math.min(95, Math.round((finished / total) * 95)))