LingxinMeng hace 4 meses
padre
commit
ddfd2ef051
Se han modificado 1 ficheros con 24 adiciones y 29 borrados
  1. 24 29
      test/oss_test.go

+ 24 - 29
test/oss_test.go

@@ -26,58 +26,53 @@ func TestCompareSize(t *testing.T) {
 }
 
 func TestDeleteDir(t *testing.T) {
+	// 配置 OSS 客户端
+	endpoint := "http://pji-bucket1.oss.icvdc.com"      // 替换为实际的 OSS Endpoint
+	accessKeyID := "n8glvFGS25MrLY7j"                   // 替换为实际的 AccessKeyID
+	accessKeySecret := "xZ2Fozoarpfw0z28FUhtg8cu0yDc5d" // 替换为实际的 AccessKeySecret
+	bucketName := "xinqi"                               // 替换为实际的 Bucket 名称
+	prefix := "your-prefix/"                            // 替换为实际的前缀
 
-	// 配置阿里云 Access Key ID、Access Key Secret 和 Endpoint
-	accessKeyID := "yourAccessKeyID"
-	accessKeySecret := "yourAccessKeySecret"
-	endpoint := "http://oss-cn-hangzhou.aliyuncs.com" // 根据你的 region 修改
-	bucketName := "yourBucketName"
-	prefix := "yourPrefix/"
-
-	// 创建客户端
+	// 创建 OSS 客户端
 	client, err := oss.New(endpoint, accessKeyID, accessKeySecret)
 	if err != nil {
 		log.Fatalf("Error creating OSS client: %v", err)
 	}
 
-	// 获取 bucket
+	// 获取 Bucket
 	bucket, err := client.Bucket(bucketName)
 	if err != nil {
 		log.Fatalf("Error getting bucket: %v", err)
 	}
 
-	// 列出符合前缀的对象
-	opts := oss.ListObjectsOptions{
-		Prefix:    prefix,
-		Delimiter: "",
-		MaxKeys:   1000, // 设置每次返回的最大对象数,可以根据需要调整
-	}
-
+	// 列出指定前缀的所有对象
+	marker := ""
 	for {
-		lor, err := bucket.ListObjects(opts)
+		lsRes, err := bucket.ListObjects(oss.Prefix(prefix), oss.Marker(marker))
 		if err != nil {
 			log.Fatalf("Error listing objects: %v", err)
 		}
 
-		// 遍历并删除对象
-		for _, obj := range lor.Objects {
-			err = bucket.DeleteObject(obj.Key)
+		// 删除列出的对象
+		var objectsToDelete []string
+		for _, object := range lsRes.Objects {
+			objectsToDelete = append(objectsToDelete, object.Key)
+		}
+
+		if len(objectsToDelete) > 0 {
+			_, err = bucket.DeleteObjects(objectsToDelete, oss.DeleteObjectsQuiet(true))
 			if err != nil {
-				log.Printf("Error deleting object %s: %v", obj.Key, err)
-				// 你可以选择如何处理删除失败的情况,例如记录日志或重新尝试
-			} else {
-				fmt.Printf("Deleted object: %s\n", obj.Key)
+				log.Fatalf("Error deleting objects: %v", err)
 			}
+			fmt.Printf("Deleted %d objects: %v\n", len(objectsToDelete), objectsToDelete)
 		}
 
 		// 如果没有更多对象,退出循环
-		if !lor.IsTruncated {
+		if !lsRes.IsTruncated {
 			break
 		}
-
-		// 更新 ListObjectsOptions 以获取下一页对象
-		opts.Marker = lor.NextMarker
+		marker = lsRes.NextMarker
 	}
 
-	fmt.Println("All objects with the specified prefix have been deleted.")
+	fmt.Println("Finished deleting all objects with prefix.")
 }