前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >minio分布式存储的go语言开发衔接

minio分布式存储的go语言开发衔接

作者头像
hotqin888
发布2023-01-10 13:42:55
1K0
发布2023-01-10 13:42:55
举报
文章被收录于专栏:hotqin888的专栏

minio是分布式存储,可集群部署,阵列磁盘,纠错码等大数据存储必备的技术。

由于它是go语言开发的,我们用go来与它衔接:上传文件,比如图片,然后预览。

这里涉及几个重要的知识点。

一是minio永久路径的设置,传统的minio提供临时路径,通过PresignedGetObject来获得一个文件最长7天的路径。通过搜索,实际上将策略设置为public即可直接通过路径获得文件或预览图片。

二是图片缩略图,minio虽然可以设置压缩,但不支持图片缩略图,需要自己处理。

三是流式上传,前段通过fileinput批量上传文件,服务端拿到文件,直接上传到minio,不用存到临时文件夹。代码如下:

代码语言:javascript
复制
files, err := c.GetFiles("input-ke-2[]") //fileinput的经典命名
// GetFiles return multi-upload files
        for i, _ := range files {  
            //for each fileheader, get a handle to the actual file
            file, err := files[i].Open()  // 关键,这里是转为具有io.reader接口的file,这个file才能上传minio
            defer file.Close()
            if err != nil {
                logs.Error(err)
                return
            }
            uploadInfo, err := minioClient.PutObject(context.Background(), minio_bucketname, strconv.Itoa(year)+month.String()+"/"+files[i].Filename, file, -1, minio.PutObjectOptions{ContentType: "application/octet-stream"})

问题:如何获得file的size呢?

四是子文件夹的建立,其实没有这个命令,但上传文件到bucket中的时候,文件名带上路径,就会自动建立文件夹,并且把文件放到这个文件夹内,而如果文件夹已经存在,那么也不影响。

就写这么多了,这个奇葩的csdn落魄了吗,上一个文章里贴了详细代码,总是无法通过审查,也不说原因,看来早点关门,我们另寻其他平台了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档