这是我参与「第五届青训营」伴学笔记创作活动的第 5 天,今天在虚拟机上搭建MinIO并使用Go语言编写代码往MinOI上传文件
前言
在极简抖音项目中,视频需要借助对象存储平台进行存放,网上的对象存储平台并不少,腾讯云的COS和阿里云的OSS也都是不错的选择,不过他们都需要计费,相比之下,决定选择免费开源的MinIO来进行对象存储。
配置MinIO
在这里我们选择使用docker对MinIO进行部署
docker pull minio/minio
下载好后,对MinIO的端口和用户名密码进行设置
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio1 \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=username" \
-e "MINIO_ROOT_PASSWORD=password" \
-d \
quay.io/minio/minio server /data --console-address ":9001"
设置后,我们将用户名设置为了username
,把密码设置成了password
,把端口设在了9001
这时,我们打开服务器的9001端口,就可以进入MinIO登录界面了
输入用户名和密码后,进入MinIO主页面
使用Go语言上传图片
在MinIO官网,有各种语言的SDK快速入门指南
这里我打开的是,Go语言的快速入门指南
将代码中这些关于服务器设置和文件地址的地方做些修改,我们就可以将图片上传至MinIO了
endpoint := "play.min.io" //对象存储服务的URL
accessKeyID := "Q3AM3UQ867SPQQA43P2F" //用户名
secretAccessKey := "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG" //密码
useSSL := true
// 创建一个叫Photo的存储桶
bucketName := "Photo"
location := "cn-north-1"
// 上传一个jpg文件。
objectName := "1.jpg"
filePath := "C:\Users\my\Pictures\1.jpg"
contentType := "application/jpg"
这时候刷新MinIO,打开存储桶,我们就可以看到我们上传的图片了
异常处理
错误1
Get "http://101.43.39.61:9001/pho/?location": http: server gave HTTP response to HTTPS client
遇到这个错误,可以将服务协议类型设置成 false,也就是 useSSL = false,这样问题就解决了。
其实,根本原因是服务器 MinIO 的服务协议类型和客户端使用的协议类型不一致造成的。如果服务器支持 https,那么客户端可以将 useSSL 置成 true。
错误2
S3 API Requests must be made to API port.
这个是因为我们用了Console 控制台的端口,应该使用API端口
在这里,我们将端口改为9000即可