MinioGolangSDK使用学习2
使用GolangSDK从Minio服务端下载文件
有两个文件下载的API可以使用
- GetObject(bucketName, objectName string, opts GetObjectOptions) (*Object, error)
- FGetObject(bucketName, objectName, filePath string, opts GetObjectOptions) error
区别是前者前者返回文件流,后者直接通过路径保存文件,按实际需求使用既可。
初始化客户端
endpoint := "127.0.0.1:9000"
accessKeyID := "minioroot"
secretAccessKey := "minio123456"
useSSL := false
// 初使化 minio client对象。
minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
if err != nil {
log.Fatalln(err)
}
log.Printf("%#v\n", minioClient) // minioClient初使化成功
// 创建一个叫mymusic的存储桶。
bucketName := "mymusic"
方法1:GetObject
第一个参数是桶名,第二个参数是对象名,第三个参数是额外GET请求参数。
返回文件流与error。
//下载文件
object, err := minioClient.GetObject(bucketName, "[雲呑めお] おかえり [中国翻訳] [DL版].zip", minio.GetObjectOptions{})
if err != nil {
fmt.Println(err)
return
}
localFile, err := os.Create("./tmp/[雲呑めお] おかえり [中国翻訳] [DL版].zip")
if err != nil {
fmt.Println(err)
return
}
if _, err = io.Copy(localFile, object); err != nil {
fmt.Println(err)
return
}
方法2:FGetObject
直接通过路径保存文件。
第一个参数是桶名,第二个参数是对象名,第三个参数是保存路径,第四个参数是额外GET请求参数。
返回error。
err = minioClient.FGetObject(bucketName, "[雲呑めお] おかえり [中国翻訳] [DL版].zip", "/tmp/[雲呑めお] おかえり [中国翻訳] [DL版].zip", minio.GetObjectOptions{})
if err != nil {
fmt.Println(err)
return
}
小技巧
若要下载桶中文件夹中的文件,在对象名前加 文件夹名/ 作为前缀即可。