使用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
}

小技巧

若要下载桶中文件夹中的文件,在对象名前加 文件夹名/ 作为前缀即可。