diff --git a/oss/bucket.go b/oss/bucket.go index 4fb58474..0770327b 100644 --- a/oss/bucket.go +++ b/oss/bucket.go @@ -440,15 +440,19 @@ func (bucket Bucket) DeleteObjects(objectKeys []string, options ...Option) (Dele // error 操作无错误为nil,非nil为错误信息。 // func (bucket Bucket) IsObjectExist(objectKey string) (bool, error) { - listRes, err := bucket.ListObjects(Prefix(objectKey), MaxKeys(1)) - if err != nil { - return false, err + _, err := bucket.GetObjectMeta(objectKey) + if err == nil { + return true, nil } - if len(listRes.Objects) == 1 && listRes.Objects[0].Key == objectKey { - return true, nil + switch err.(type) { + case ServiceError: + if err.(ServiceError).StatusCode == 404 && err.(ServiceError).Code == "NoSuchKey" { + return false, nil + } } - return false, nil + + return false, err } //