首页 > 其他分享 >minio分布式存储的go语言开发衔接

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

时间:2023-01-28 12:05:08浏览次数:56  
标签:files minio err 文件夹 file go 上传 分布式



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

标签:files,minio,err,文件夹,file,go,上传,分布式
From: https://blog.51cto.com/3xxx/6024888

相关文章

  • Google Earth Engine (GEE)——将影像导出Google硬盘中的易犯错误
    很多时候我们需要注意导出的错误信息,这里我们看到首先第一个错误就是我们选择波段的时候并没有按照指定的波段名称来进行,同时,我们不能直接导出影像集合,所以这里在导出的过程......
  • Go 数组详解和实战
    数组是存放元素的容器,Go语言中数组的长度是数组类型的一部分,定义数组时必须指定存放元素的类型和容量(长度)定义vara1[3]boolvara2[4]intfmt.Printf("a1:%T\n......
  • (23)go-micro微服务客户端开发(使用负载均衡)
    目录一main.go开发二客户端代码开发:三客户端测试功能1.发送注册邮件2.实现注册功能3.查询用户功能四运行项目五最后一main.go开发至此,咱们的项目服务端代码,已经开......
  • 2 System Calls Using Go
    Theoperatingsystemprovidesalotofwaysforapplicationstoextractinformationandperformoperations.Youwilllookatthedifferentwaystoextractsys......
  • 如何在 Go 语言开发的宿主程序中嵌入 WebAssembly
    ​​如何在Go语言开发的宿主程序中嵌入WebAssembly​​ 在WebAssembly的官方定义中,​​forastack-basedvirtualmachine​​​这句话也值得关注,因为它引领了......
  • Django3 使用xadmin
    xadmin下载地址:https://github.com/vip68/xadmin_bugfix下载完之后解压,只需要把里面的xadmin文件夹和requirements.txt文件复制到项目根目录下,然后在终端执行pipinstall......
  • PHP转Go实践:xjson解析神器「开源工具集」
    前言近期会更新一系列开源项目的文章,新的一年会和大家做更多的开源项目,也欢迎大家加入进来。xutil今天分享的文章源自于开源项目jinzaigo/xutil的封装。在封装过程中......
  • 分布式协议与算法-Quorum NWR
    1.强一致性与最终一致性1.1强一致性强一致性能保证写操作完成后,任何后续访问都能读到更新后的值;强一致性可以保证从库有与主库一致的数据。如果主库突然宕机,我们仍可以保......
  • PyCharm配置Django多个setting文件
    django项目设置多个setting文件时,pycharm会少了很多代码补全提示,对于我这种新手很不方便,经过一番折腾,总结了一些小经验1.PyCharm-->设置-->语言和框架-->Django-->启用Dj......
  • 【分布式技术专题】「分布式缓存专题」针对性分析缓存与数据库一致性如何解决
    数据缓存由来在实际的业务场景中,一定有很多需要做数据缓存的场景,比如售卖商品页面,包括了许多并发访问量很大的数据,它们可以称作是是"热点”数据,这些数据有一个特点,就是更新......