Skip to content

Commit bc891d4

Browse files
authored
Merge pull request #324 from tencentyun/feature_jojoliang_00cb9939
Feature jojoliang 00cb9939
2 parents 94de178 + 1143c7a commit bc891d4

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

cos.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626

2727
const (
2828
// Version current go sdk version
29-
Version = "0.7.68"
29+
Version = "0.7.69"
3030
UserAgent = "cos-go-sdk-v5/" + Version
3131
contentTypeXML = "application/xml"
3232
defaultServiceBaseURL = "http://service.cos.myqcloud.com"

object.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2262,6 +2262,18 @@ func (s *ObjectService) PutFromURL(ctx context.Context, name string, downloadURL
22622262
break
22632263
}
22642264
}
2265+
// 兼容0字节文件,如果没有上传分片,则上传一个空分片
2266+
if len(comOpt.Parts) == 0 {
2267+
resp, err := s.UploadPart(ctx, name, uploadId, 1, http.NoBody, nil)
2268+
if err != nil {
2269+
isErr = true
2270+
return nil, resp, err
2271+
}
2272+
comOpt.Parts = append(comOpt.Parts, Object{
2273+
PartNumber: 1,
2274+
ETag: resp.Header.Get("ETag"),
2275+
})
2276+
}
22652277
res, resp, err := s.CompleteMultipartUpload(ctx, name, uploadId, comOpt)
22662278
if err != nil {
22672279
isErr = true

object_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,6 +2400,10 @@ func TestObjectService_PutFromURL(t *testing.T) {
24002400
t.Errorf("io.copy failed: %v", err)
24012401
}
24022402
})
2403+
source_empty := "source_empty"
2404+
mux.HandleFunc("/"+source_empty, func(w http.ResponseWriter, r *http.Request) {
2405+
testMethod(t, r, http.MethodGet)
2406+
})
24032407

24042408
// 全局crc
24052409
mux.HandleFunc("/"+dest, func(w http.ResponseWriter, r *http.Request) {
@@ -2513,4 +2517,12 @@ func TestObjectService_PutFromURL(t *testing.T) {
25132517
if err == nil {
25142518
t.Errorf("Object.PutFromURL expect error")
25152519
}
2520+
initTest()
2521+
realcrc = 0
2522+
downloadUrl = client.BaseURL.BucketURL.String() + "/" + source_empty
2523+
_, _, err = client.Object.PutFromURL(context.Background(), dest, downloadUrl, nil)
2524+
if err != nil {
2525+
t.Errorf("Object.PutFromURL expect error")
2526+
}
2527+
25162528
}

retry_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ var (
1919
func retrysetup(host string) *Client {
2020
u, _ := url.Parse("http://" + host)
2121
cli := NewClient(&BaseURL{u, u, u, u, u, u}, &http.Client{
22-
Timeout: 3 * time.Second,
22+
Timeout: 6 * time.Second,
2323
})
2424
cli.Conf.RetryOpt.Count = 2
2525
return cli

0 commit comments

Comments
 (0)