Skip to content

Commit 1f1f7c2

Browse files
author
jojoliang
committed
签入content-length
1 parent 3acf74b commit 1f1f7c2

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

cos.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,26 @@ func (c *Client) GetCredential() *Credential {
267267
return nil
268268
}
269269

270+
func (c *Client) newPresignedRequest(ctx context.Context, sendOpt *sendOptions) (req *http.Request, err error) {
271+
sendOpt.uri, err = addURLOptions(sendOpt.uri, sendOpt.optQuery)
272+
if err != nil {
273+
return
274+
}
275+
u, _ := url.Parse(sendOpt.uri)
276+
urlStr := sendOpt.baseURL.ResolveReference(u).String()
277+
278+
req, err = http.NewRequest(sendOpt.method, urlStr, nil)
279+
if err != nil {
280+
return
281+
}
282+
283+
req.Header, err = addHeaderOptions(ctx, req.Header, sendOpt.optHeader)
284+
if err != nil {
285+
return
286+
}
287+
return req, err
288+
}
289+
270290
func (c *Client) newRequest(ctx context.Context, baseURL *url.URL, uri, method string, body interface{}, optQuery interface{}, optHeader interface{}, isRetry bool) (req *http.Request, err error) {
271291
if c.invalidURL {
272292
return nil, invalidBucketErr
@@ -302,6 +322,8 @@ func (c *Client) newRequest(ctx context.Context, baseURL *url.URL, uri, method s
302322
contentMD5 = base64.StdEncoding.EncodeToString(calMD5Digest(b))
303323
contentLength = int64(len(b))
304324
}
325+
} else if method == http.MethodPut || method == http.MethodPost {
326+
contentLength = 0
305327
}
306328

307329
req, err = http.NewRequest(method, urlStr, reader)

object.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func (s *ObjectService) GetPresignedURL(ctx context.Context, httpMethod, name, a
162162
}
163163
}
164164
}
165-
req, err := s.client.newRequest(ctx, sendOpt.baseURL, sendOpt.uri, sendOpt.method, sendOpt.body, sendOpt.optQuery, sendOpt.optHeader, false)
165+
req, err := s.client.newPresignedRequest(ctx, &sendOpt)
166166
if err != nil {
167167
return nil, err
168168
}
@@ -243,7 +243,7 @@ func (s *ObjectService) GetPresignedURL2(ctx context.Context, httpMethod, name s
243243
sendOpt.uri = fmt.Sprintf("%s%s%s", sendOpt.uri, mark, url.Values{"x-cos-security-token": []string{cred.SessionToken}}.Encode())
244244
}
245245

246-
req, err := s.client.newRequest(ctx, sendOpt.baseURL, sendOpt.uri, sendOpt.method, sendOpt.body, sendOpt.optQuery, sendOpt.optHeader, false)
246+
req, err := s.client.newPresignedRequest(ctx, &sendOpt)
247247
if err != nil {
248248
return nil, err
249249
}
@@ -329,7 +329,7 @@ func (s *ObjectService) GetPresignedURL3(ctx context.Context, httpMethod, name s
329329
sendOpt.uri = fmt.Sprintf("%s%s%s", sendOpt.uri, mark, url.Values{"x-cos-security-token": []string{cred.SessionToken}}.Encode())
330330
}
331331

332-
req, err := s.client.newRequest(ctx, sendOpt.baseURL, sendOpt.uri, sendOpt.method, sendOpt.body, sendOpt.optQuery, sendOpt.optHeader, false)
332+
req, err := s.client.newPresignedRequest(ctx, &sendOpt)
333333
if err != nil {
334334
return nil, err
335335
}
@@ -382,7 +382,7 @@ func (s *ObjectService) GetSignature(ctx context.Context, httpMethod, name, ak,
382382
sendOpt.uri = fmt.Sprintf("%s?%s", sendOpt.uri, qs)
383383
}
384384
}
385-
req, err := s.client.newRequest(ctx, sendOpt.baseURL, sendOpt.uri, sendOpt.method, sendOpt.body, sendOpt.optQuery, sendOpt.optHeader, false)
385+
req, err := s.client.newPresignedRequest(ctx, &sendOpt)
386386
if err != nil {
387387
return ""
388388
}

0 commit comments

Comments
 (0)