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

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

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

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

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

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

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

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落魄了吗,上一个文章里贴了详细代码,总是无法通过审查,也不说原因,看来早点关门,我们另寻其他平台了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值