MinIO 如何对上传文件进度监控?

minio如何获取上传文件进度?

使用putObject,看文档并没有关于获取上传进度相关参数

阅读 2.5k
avatarAI BotBETA

在 MinIO 中,要监控上传文件的进度,你可以使用 MinIO 的 SDK 或 MinIO 的命令行工具 mc。以下是使用这两种工具的详细步骤:

使用 MinIO SDK

MinIO 提供了多种语言的 SDK,包括 Go、Java、Python、.NET 等。使用这些 SDK,你可以在上传文件时获取上传进度。以下是一个使用 Go SDK 的示例:

package main

import (
 "context"
 "log"
 "time"

 "github.com/minio/minio-go/v7"
 "github.com/minio/minio-go/v7/pkg/encrypt"
)

func main() {
 // 初始化 minio client 对象.
 minioClient, err := minio.New("your-minio-server.example.com:9000", &minio.Options{
 // 设置你的 access key 和 secret key.
 AccessKeyID: "YOUR-ACCESSKEYID", SecretAccessKey: "YOUR-SECRETACCESSKEY", Insecure: true,
 })
 if err != nil {
 log.Fatalf("Error initializing minio client: %v", err)
 }

 // 创建一个加密对象,这里我们使用 SSE-S3。
 encryptOpts := encrypt.DefaultEncryptionOptions{
 Key: []byte("my-secret-key123"), // 替换为你自己的密钥。
 }

 // 创建一个 put object options 对象,并设置 encryption options。
 putObjectOpts := minio.PutObjectOptions{
 Encryption: &encryptOpts,
 }

 // 上传一个文件。你可以替换 "my-bucketname", "my-objectname", 和 "my-filename.txt" 为你自己的值。
 file, err := os.Open("my-filename.txt") // 替换为你自己的文件路径。
 if err != nil {
 log.Fatalf("Error opening file: %v", err)
 }
 defer file.Close()

 // 上传文件,并打印上传进度。这里的上传进度是通过 io.ReaderAt 和 progress.NewReader 提供的。
 progress := progress.NewReader(file) // 创建一个带有上传进度功能的 reader。
 if _, err := minioClient.PutObject(context.Background(), "my-bucketname", "my-objectname", progress, putObjectOpts); err != nil {
 log.Fatalf("Error uploading object: %v", err)
 }
}

在这个示例中,我们使用了 progress.NewReader 来创建一个带有上传进度功能的 reader。这样,在上传文件时,我们可以实时地获取上传进度。

使用 mc 命令行工具

MinIO 的命令行工具 mc 不直接提供上传进度监控的功能。但是,你可以结合使用 mc 和其他的工具来实现这个功能。例如,你可以使用 mc 上传文件,并同时使用其他的工具(如 curlwget)来监控上传进度。

1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏