|
|
@ -37,10 +37,19 @@ type presignedURLTestingOptions struct { |
|
|
|
// 该操作需要对目标 Object 具有读权限或目标 Object 对所有人都开放了读权限(公有读)。
|
|
|
|
//
|
|
|
|
// https://www.qcloud.com/document/product/436/7753
|
|
|
|
func (s *ObjectService) Get(ctx context.Context, name string, opt *ObjectGetOptions) (*Response, error) { |
|
|
|
func (s *ObjectService) Get(ctx context.Context, name string, opt *ObjectGetOptions, id ...string) (*Response, error) { |
|
|
|
var u string |
|
|
|
if len(id) == 1 { |
|
|
|
u = fmt.Sprintf("/%s?versionId=%s", encodeURIComponent(name), id[0]) |
|
|
|
} else if len(id) == 0 { |
|
|
|
u = "/" + encodeURIComponent(name) |
|
|
|
} else { |
|
|
|
return nil, errors.New("wrong params") |
|
|
|
} |
|
|
|
|
|
|
|
sendOpt := sendOptions{ |
|
|
|
baseURL: s.client.BaseURL.BucketURL, |
|
|
|
uri: "/" + encodeURIComponent(name), |
|
|
|
uri: u, |
|
|
|
method: http.MethodGet, |
|
|
|
optQuery: opt, |
|
|
|
optHeader: opt, |
|
|
@ -51,8 +60,8 @@ func (s *ObjectService) Get(ctx context.Context, name string, opt *ObjectGetOpti |
|
|
|
} |
|
|
|
|
|
|
|
// GetToFile download the object to local file
|
|
|
|
func (s *ObjectService) GetToFile(ctx context.Context, name, localpath string, opt *ObjectGetOptions) (*Response, error) { |
|
|
|
resp, err := s.Get(context.Background(), name, opt) |
|
|
|
func (s *ObjectService) GetToFile(ctx context.Context, name, localpath string, opt *ObjectGetOptions, id ...string) (*Response, error) { |
|
|
|
resp, err := s.Get(ctx, name, opt, id...) |
|
|
|
if err != nil { |
|
|
|
return resp, err |
|
|
|
} |
|
|
@ -162,6 +171,13 @@ func (s *ObjectService) PutFromFile(ctx context.Context, name string, filePath s |
|
|
|
|
|
|
|
// ObjectCopyHeaderOptions is the head option of the Copy
|
|
|
|
type ObjectCopyHeaderOptions struct { |
|
|
|
// When use replace directive to update meta infos
|
|
|
|
CacheControl string `header:"Cache-Control,omitempty" url:"-"` |
|
|
|
ContentDisposition string `header:"Content-Disposition,omitempty" url:"-"` |
|
|
|
ContentEncoding string `header:"Content-Encoding,omitempty" url:"-"` |
|
|
|
ContentType string `header:"Content-Type,omitempty" url:"-"` |
|
|
|
Expires string `header:"Expires,omitempty" url:"-"` |
|
|
|
Expect string `header:"Expect,omitempty" url:"-"` |
|
|
|
XCosMetadataDirective string `header:"x-cos-metadata-directive,omitempty" url:"-" xml:"-"` |
|
|
|
XCosCopySourceIfModifiedSince string `header:"x-cos-copy-source-If-Modified-Since,omitempty" url:"-" xml:"-"` |
|
|
|
XCosCopySourceIfUnmodifiedSince string `header:"x-cos-copy-source-If-Unmodified-Since,omitempty" url:"-" xml:"-"` |
|
|
@ -169,8 +185,9 @@ type ObjectCopyHeaderOptions struct { |
|
|
|
XCosCopySourceIfNoneMatch string `header:"x-cos-copy-source-If-None-Match,omitempty" url:"-" xml:"-"` |
|
|
|
XCosStorageClass string `header:"x-cos-storage-class,omitempty" url:"-" xml:"-"` |
|
|
|
// 自定义的 x-cos-meta-* header
|
|
|
|
XCosMetaXXX *http.Header `header:"x-cos-meta-*,omitempty" url:"-"` |
|
|
|
XCosCopySource string `header:"x-cos-copy-source" url:"-" xml:"-"` |
|
|
|
XCosMetaXXX *http.Header `header:"x-cos-meta-*,omitempty" url:"-"` |
|
|
|
XCosCopySource string `header:"x-cos-copy-source" url:"-" xml:"-"` |
|
|
|
XCosServerSideEncryption string `header:"x-cos-server-side-encryption,omitempty" url:"-" xml:"-"` |
|
|
|
} |
|
|
|
|
|
|
|
// ObjectCopyOptions is the option of Copy, choose header or body
|
|
|
@ -242,10 +259,19 @@ type ObjectHeadOptions struct { |
|
|
|
// Head Object请求可以取回对应Object的元数据,Head的权限与Get的权限一致
|
|
|
|
//
|
|
|
|
// https://www.qcloud.com/document/product/436/7745
|
|
|
|
func (s *ObjectService) Head(ctx context.Context, name string, opt *ObjectHeadOptions) (*Response, error) { |
|
|
|
func (s *ObjectService) Head(ctx context.Context, name string, opt *ObjectHeadOptions, id ...string) (*Response, error) { |
|
|
|
var u string |
|
|
|
if len(id) == 1 { |
|
|
|
u = fmt.Sprintf("/%s?versionId=%s", encodeURIComponent(name), id[0]) |
|
|
|
} else if len(id) == 0 { |
|
|
|
u = "/" + encodeURIComponent(name) |
|
|
|
} else { |
|
|
|
return nil, errors.New("wrong params") |
|
|
|
} |
|
|
|
|
|
|
|
sendOpt := sendOptions{ |
|
|
|
baseURL: s.client.BaseURL.BucketURL, |
|
|
|
uri: "/" + encodeURIComponent(name), |
|
|
|
uri: u, |
|
|
|
method: http.MethodHead, |
|
|
|
optHeader: opt, |
|
|
|
} |
|
|
|