diff --git a/src/composables/usePresignedUpload.ts b/src/composables/usePresignedUpload.ts index 2ff2035..97630af 100644 --- a/src/composables/usePresignedUpload.ts +++ b/src/composables/usePresignedUpload.ts @@ -213,10 +213,13 @@ export function usePresignedUpload(options: UsePresignedUploadOptions = {}) { presignStatus.value = PRESIGN_UPLOAD_STATUS.UPLOADING const progressHandler = createProgressHandler(options?.onProgress) + const uploadUrl = + session.proxy_upload_url || session.upload_url || session.legacy_proxy_upload_url const response = await PresignUploadService.proxyUpload( session.upload_id, file, - progressHandler + progressHandler, + uploadUrl ) if (response.code === 200 && response.detail?.code) { diff --git a/src/services/presign-upload.ts b/src/services/presign-upload.ts index 3d1def8..47c6684 100644 --- a/src/services/presign-upload.ts +++ b/src/services/presign-upload.ts @@ -19,12 +19,17 @@ export class PresignUploadService { static async proxyUpload( uploadId: string, file: File, - onProgress?: (progress: UploadProgress) => void + onProgress?: (progress: UploadProgress) => void, + uploadUrl?: string ): Promise> { const formData = new FormData() formData.append('file', file) - return api.put(`/presign/upload/proxy/${uploadId}`, formData, multipartUploadConfig(onProgress)) + return api.put( + uploadUrl || `/presign/upload/proxy/${uploadId}`, + formData, + multipartUploadConfig(onProgress) + ) } static async confirmUpload( diff --git a/src/types/presign-upload.ts b/src/types/presign-upload.ts index 8f38144..abb09ea 100644 --- a/src/types/presign-upload.ts +++ b/src/types/presign-upload.ts @@ -22,6 +22,8 @@ export interface PresignInitRequest { export interface PresignInitResponse { upload_id: string upload_url: string + proxy_upload_url?: string + legacy_proxy_upload_url?: string mode: PresignUploadMode expires_in: number }