From 40724aad4f917a0f1b70e8af73175382fdfab854 Mon Sep 17 00:00:00 2001 From: MilkChan01 <43093393+MilkChan01@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:14:17 +0800 Subject: [PATCH] fix: uploadPart cannot upload stream and etag error (#1334) --- src/internal/client.ts | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/internal/client.ts b/src/internal/client.ts index 0457c233..637f82e3 100644 --- a/src/internal/client.ts +++ b/src/internal/client.ts @@ -121,7 +121,6 @@ import { parseInitiateMultipart, parseObjectLegalHoldConfig, parseSelectObjectContentResponse, - uploadPartParser, } from './xml-parser.ts' const xml = new xml2js.Builder({ renderOpts: { pretty: false }, headless: true }) @@ -2649,25 +2648,24 @@ export class TypedClient { return await this.copyObjectV2(source, dest) } - async uploadPart(partConfig: { - bucketName: string - objectName: string - uploadID: string - partNumber: number - headers: RequestHeaders - }) { + async uploadPart( + partConfig: { + bucketName: string + objectName: string + uploadID: string + partNumber: number + headers: RequestHeaders + }, + payload?: Binary, + ) { const { bucketName, objectName, uploadID, partNumber, headers } = partConfig const method = 'PUT' const query = `uploadId=${uploadID}&partNumber=${partNumber}` const requestOptions = { method, bucketName, objectName: objectName, query, headers } - - const res = await this.makeRequestAsync(requestOptions) - const body = await readAsString(res) - const partRes = uploadPartParser(body) - + const res = await this.makeRequestAsync(requestOptions, payload) return { - etag: sanitizeETag(partRes.ETag), + etag: sanitizeETag(res.headers.etag), key: objectName, part: partNumber, }