文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

将图像上传到 MinIO

2024-04-05 00:05

关注

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《将图像上传到 MinIO》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我想将.png格式的图片上传到minio。但我遇到错误找不到目录的问题

error: open /sensors/download (1).png: no such file or directory

我在名为 ems_service 的 minio 存储桶中创建了一个名为 ems_service 的目录文件,其名称为传感器名称。

就像我编写的使用 go 和 minio 上传图像文件的代码

ctx := context.Background()
    endpoint := config.MINIO_ENDPOINT
    accessKeyID := config.MINIO_ID
    secretAccessKey := config.MINIO_KEY
    useSSL := true
    contentType := "image/png"
    location := "us-east-1"

    utilities.Info.Printf("secret access key: %+v", secretAccessKey)
    utilities.Info.Printf("access ID: %+v", accessKeyID)

    // Initialize minio client object.
    minioClient, err := minio.New(endpoint, &minio.Options{
        Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
        Secure: useSSL,
    })

    // minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)

    if err != nil {
        utilities.Error.Printf("Error minio Client : %s", err)
        response[config.MESSAGE_RESPONSE_INDEX] = "Error Minio Client"
        c.JSON(http.StatusInternalServerError, response)
        return
    }


    bucketName := config.MINIO_BUCKET_NAME

    utilities.Info.Printf("minio client: %+v", &minioClient)
    utilities.Info.Printf("Bucket name check: %+v\n", bucketName)
    utilities.Info.Printf("Endpoint URL minio: %+v", endpoint)
   
    // Make a new bucket.
    err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location, ObjectLocking: true})
    // err = minioClient.MakeBucket(bucketName, location)
    if err != nil {
        // Check to see if we already own this bucket (which happens if you run this twice)
        exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
        utilities.Info.Printf("bucket exists: %+v", exists)
        if errBucketExists == nil && exists {
            utilities.Info.Printf("We already own %+v\n", bucketName)
        } else {
            utilities.Error.Printf("make bucket error : %s", err)
            response[config.MESSAGE_RESPONSE_INDEX] = "make bucket error"
            c.JSON(http.StatusInternalServerError, response)
            return
        }
    } else {
        utilities.Info.Printf("Successfully created %s\n", bucketName)
    }


    fileNormalIcon, _ := c.FormFile("file_normal_icon")
    utilities.Info.Printf("filenormalicon: %+v", fileNormalIcon)
    var pathNormalIcon string
    if fileNormalIcon != nil {
        // Upload the .png file
        pathNormalIcon = "/sensors/" + fileNormalIcon.Filename
        utilities.Info.Printf("Pathnormalicon: %+v", pathNormalIcon)
        utilities.Info.Printf("Endpoint URL minio: %+v", endpoint)
        utilities.Info.Printf("Bucket name check: %+v\n", bucketName)

        // Upload file .png with FPutObject

        output, err := minioClient.FPutObject(ctx, bucketName, fileNormalIcon.Filename, pathNormalIcon, minio.PutObjectOptions{ContentType: contentType})
        if err != nil {
            utilities.Error.Printf("Error upload image to bucket: %s", err)
            response[config.MESSAGE_RESPONSE_INDEX] = fmt.Sprintf("err: %s", err.Error())
            c.JSON(http.StatusInternalServerError, response)
            return
        }

        utilities.Info.Panicf("result: %+v", output)

        data["normal_icon"] = pathNormalIcon
        dataUpdateExist = true
    }

minio go api 参考代码文档链接

minio go 客户端 api


正确答案


您可以按照以下方式通过 go client api 将图像放入 minio:

前置步骤:

  1. 执行 minio:
$ minio_root_user=minio minio_root_password=minio123 minio server /volumes/data{1...4} --address :9000 --console-address :9001
minio object storage server
status:         4 online, 0 offline. 
api: http://192.168.0.13:9000  http://127.0.0.1:9000                             
rootuser: minio 
rootpass: minio123 
console: http://192.168.0.13:9001 http://127.0.0.1:9001               
rootuser: minio 
rootpass: minio123 

command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
   $ mc alias set myminio http://192.168.0.13:9000 minio minio123

documentation: https://min.io/docs/minio/linux/index.html
  • 创建存储桶:
  • 准备好您的图像,以便 go 代码可以读取它
  • $ ls
    my-filename.png put.go
    

    步骤:

    1. 使用此代码:
    package main
    
    import (
        "context"
        "log"
    
        "github.com/minio/minio-go/v7"
        "github.com/minio/minio-go/v7/pkg/credentials"
    )
    
    func main() {
        endpoint := "127.0.0.1:9000"
        accesskeyid := "minio"
        secretaccesskey := "minio123"
        usessl := false
    
        s3client, err := minio.new(
            endpoint, &minio.options{
            creds:  credentials.newstaticv4(accesskeyid, secretaccesskey, ""),
            secure: usessl,
        })
        if err != nil {
            log.fatalln(err)
        }
    
        if _, err := s3client.fputobject(context.background(), "my-bucketname", "my-objectname.png", "my-filename.png", minio.putobjectoptions{
            contenttype: "application/csv",
        }); err != nil {
            log.fatalln(err)
        }
        log.println("successfully uploaded")
    }
    
    
  • 编译并运行 go 代码:
  • $ go build put.go
    $ ./put
    2023/03/18 17:41:04 Successfully uploaded
    
  • 然后在控制台中观看图像:
  • 希望这有帮助! :)

    以上就是《将图像上传到 MinIO》的详细内容,更多关于的资料请关注编程网公众号!

    阅读原文内容投诉

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    软考中级精品资料免费领

    • 历年真题答案解析
    • 备考技巧名师总结
    • 高频考点精准押题
    • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

      难度     813人已做
      查看
    • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

      难度     354人已做
      查看
    • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

      难度     318人已做
      查看
    • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

      难度     435人已做
      查看
    • 2024年上半年系统架构设计师考试综合知识真题

      难度     224人已做
      查看

    相关文章

    发现更多好内容

    猜你喜欢

    AI推送时光机
    位置:首页-资讯-后端开发
    咦!没有更多了?去看看其它编程学习网 内容吧
    首页课程
    资料下载
    问答资讯