本文介绍如何删除文件。
警告 请您谨慎使用删除操作,文件一旦删除将无法恢复。
删除文件的完整代码请参见GitHub。
删除单个文件
以下代码用于删除单个文件:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 创建OSSClient实例。 client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } bucketName := "<yourBucketName>" objectName := "<yourObjectName>" // 获取存储空间。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 删除单个文件。objectName表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 // 如需删除文件夹,请将objectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。 err = bucket.DeleteObject(objectName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }
删除多个文件
您可以通过Bucket.DeleteObjects
来删除多个文件,并通过DeleteObjectsQuiet
参数来指定是否返回删除的结果。默认返回删除成功的文件。
以下代码用于批量删除文件:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 创建OSSClient实例。 client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } bucketName := "<yourBucketName>" // 获取存储空间。 bucket, err := client.Bucket(bucketName) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 返回删除成功的文件。 delRes, err := bucket.DeleteObjects([]string{"my-object-1", "my-object-2"}) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } fmt.Println("Deleted Objects:", delRes.DeletedObjects) // 不返回删除的结果。 _, err = bucket.DeleteObjects([]string{"my-object-3", "my-object-4"}, oss.DeleteObjectsQuiet(true)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } }
删除指定前缀(prefix)的文件
以下代码用于删除指定前缀的文件:
package main import ( "fmt" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) func main() { // 创建OSSClient实例。 client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 获取存储空间。 bucket, err := client.Bucket("<yourBucketName>") if err != nil { fmt.Println("Error:", err) os.Exit(-1) } // 列举所有包含指定前缀的文件并删除。 marker := oss.Marker("") prefix := oss.Prefix("<yourObjectPrefix>") count := 0 for { lor, err := bucket.ListObjects(marker, prefix) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } objects := []string{} for _, object := range lor.Objects { objects = append(objects, object.Key) } delRes, err := bucket.DeleteObjects(objects, oss.DeleteObjectsQuiet(true)) if err != nil { fmt.Println("Error:", err) os.Exit(-1) } if len(delRes.DeletedObjects) > 0 { fmt.Println("these objects deleted failure,", delRes.DeletedObjects) os.Exit(-1) } count += len(objects) prefix = oss.Prefix(lor.Prefix) marker = oss.Marker(lor.NextMarker) if !lor.IsTruncated { break } } fmt.Printf("success,total delete object count:%d\n", count) }