登录
首页 >  Golang >  Go问答

用golang实现批量删除minio存储桶中的对象

来源:stackoverflow

时间:2024-03-09 21:09:26 351浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《用golang实现批量删除minio存储桶中的对象》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在尝试批量删除 minio 中的对象,如下所述:

objectsCh := make(chan minio.ObjectInfo)

// Send object names that are needed to be removed to objectsCh
go func() {
    defer close(objectsCh)
    // List all objects from a bucket-name with a matching prefix.
    for object := range minioClient.ListObjects(context.Background(), "my-bucketname", "my-prefixname", true, nil) {
        if object.Err != nil {
            log.Fatalln(object.Err)
        }
        objectsCh <- object
    }
}()

opts := minio.RemoveObjectsOptions{
    GovernanceBypass: true,
}

for rErr := range minioClient.RemoveObjects(context.Background(), "my-bucketname", objectsCh, opts) {
    fmt.Println("Error detected during deletion: ", rErr)
}

我可以在哪里通过 bucketnameprefixnamelistobjects。然而,我正在努力寻找一种方法,可以通过例如我想要删除的对象名称切片或任何其他方式来 listobjects 。所以我的问题是:如何为给定存储桶中的任意 objectnames 正确生成 listobjects ?或者还有其他方法可以通过名称删除对象吗?谢谢。


正确答案


func deleteiteminminio(ctx context.context, item []string) (string, error) {

    minioclient, err := minio.new("test.com", os.getenv("minio_access_key"), os.getenv("minio_secret_key"), true)
    if err != nil {
        log.println(err)
    }

    for _, val := range item {
        err = minioclient.removeobject("my-bucketname", val)
        if err != nil {
            panic(err)
        }
    }

    return "success", nil
}

并用以下方式调用它:

r.POST("/test/delete", func(c *gin.Context) {
        item := []string{"golang.png", "phplogo.jpg"}
        execute.DeleteItemInMinio(context.Background(), item)
    })

我试过了,它有效,以防万一你仍然需要它

今天关于《用golang实现批量删除minio存储桶中的对象》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>