@@ -46,14 +46,20 @@ export class Oss extends API {
46
46
this . options = options ;
47
47
}
48
48
49
+ // https://github.com/node-modules/oss-client/blob/master/src/OSSObject.ts#L984
50
+ #objectKey( key : string ) {
51
+ return key . replace ( / ^ \/ + / , '' ) ;
52
+ }
53
+
49
54
private async * putObjectIterator ( request : PutObjectRequest ) : AsyncGenerator < PutObjectInput > {
55
+ const key = this . #objectKey( request . key ) ;
50
56
let hasChunk = false ;
51
57
for await ( const chunk of request . body ) {
52
58
hasChunk = true ;
53
59
const req = new PutObjectInput ( ) ;
54
60
req . setStoreName ( request . storeName ) ;
55
61
req . setBucket ( request . bucket ) ;
56
- req . setKey ( request . key ) ;
62
+ req . setKey ( key ) ;
57
63
req . setContentLength ( request . contentLength ) ;
58
64
if ( request . acl ) {
59
65
req . setAcl ( request . acl ) ;
@@ -88,7 +94,7 @@ export class Oss extends API {
88
94
const req = new PutObjectInput ( ) ;
89
95
req . setStoreName ( request . storeName ) ;
90
96
req . setBucket ( request . bucket ) ;
91
- req . setKey ( request . key ) ;
97
+ req . setKey ( key ) ;
92
98
req . setContentLength ( request . contentLength ) ;
93
99
if ( request . acl ) {
94
100
req . setAcl ( request . acl ) ;
@@ -152,10 +158,11 @@ export class Oss extends API {
152
158
}
153
159
154
160
async get ( request : GetObjectRequest ) : Promise < GetObjectResponse > {
161
+ const key = this . #objectKey( request . key ) ;
155
162
const req = new GetObjectInput ( ) ;
156
163
req . setStoreName ( request . storeName ) ;
157
164
req . setBucket ( request . bucket ) ;
158
- req . setKey ( request . key ) ;
165
+ req . setKey ( key ) ;
159
166
if ( request . expectedBucketOwner ) {
160
167
req . setExpectedBucketOwner ( request . expectedBucketOwner ) ;
161
168
}
@@ -232,10 +239,11 @@ export class Oss extends API {
232
239
}
233
240
234
241
async copy ( request : CopyObjectRequest ) : Promise < CopyObjectOutput . AsObject > {
242
+ const key = this . #objectKey( request . key ) ;
235
243
const req = new CopyObjectInput ( ) ;
236
244
req . setStoreName ( request . storeName ) ;
237
245
req . setBucket ( request . bucket ) ;
238
- req . setKey ( request . key ) ;
246
+ req . setKey ( key ) ;
239
247
const copySource = new CopySource ( ) ;
240
248
req . setCopySource ( copySource ) ;
241
249
copySource . setCopySourceBucket ( request . copySource . copySourceBucket ) ;
@@ -261,10 +269,11 @@ export class Oss extends API {
261
269
}
262
270
263
271
async head ( request : HeadObjectRequest ) : Promise < HeadObjectOutput . AsObject > {
272
+ const key = this . #objectKey( request . key ) ;
264
273
const req = new HeadObjectInput ( ) ;
265
274
req . setStoreName ( request . storeName ) ;
266
275
req . setBucket ( request . bucket ) ;
267
- req . setKey ( request . key ) ;
276
+ req . setKey ( key ) ;
268
277
if ( request . checksumMode ) {
269
278
req . setChecksumMode ( request . checksumMode ) ;
270
279
}
@@ -316,10 +325,11 @@ export class Oss extends API {
316
325
}
317
326
318
327
async delete ( request : DeleteObjectRequest ) : Promise < DeleteObjectOutput . AsObject > {
328
+ const key = this . #objectKey( request . key ) ;
319
329
const req = new DeleteObjectInput ( ) ;
320
330
req . setStoreName ( request . storeName ) ;
321
331
req . setBucket ( request . bucket ) ;
322
- req . setKey ( request . key ) ;
332
+ req . setKey ( key ) ;
323
333
if ( request . requestPayer ) {
324
334
req . setRequestPayer ( request . requestPayer ) ;
325
335
}
@@ -376,10 +386,11 @@ export class Oss extends API {
376
386
}
377
387
378
388
async signUrl ( request : SignUrlRequest ) : Promise < SignURLOutput . AsObject > {
389
+ const key = this . #objectKey( request . key ) ;
379
390
const req = new SignURLInput ( ) ;
380
391
req . setStoreName ( request . storeName ) ;
381
392
req . setBucket ( request . bucket ) ;
382
- req . setKey ( request . key ) ;
393
+ req . setKey ( key ) ;
383
394
req . setMethod ( request . method ) ;
384
395
req . setExpiredInSec ( request . expiredInSec ) ;
385
396
0 commit comments