Przeglądaj źródła

modify IsObjectExist

dengwu12 8 lat temu
rodzic
commit
95f2f5f2fb
1 zmienionych plików z 10 dodań i 6 usunięć
  1. 10 6
      oss/bucket.go

+ 10 - 6
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
 }
 
 //