minio如何获取上传文件进度?
使用putObject,看文档并没有关于获取上传进度相关参数
在 MinIO 中,要监控上传文件的进度,你可以使用 MinIO 的 SDK 或 MinIO 的命令行工具 mc
。以下是使用这两种工具的详细步骤:
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
上传文件,并同时使用其他的工具(如 curl
或 wget
)来监控上传进度。
3 回答1.2k 阅读✓ 已解决
1 回答961 阅读✓ 已解决
1 回答1k 阅读
1 回答1.1k 阅读
1 回答914 阅读
643 阅读
651 阅读
官方SDK里面使用示例,以下为mino-py为例:
https://github.com/minio/minio-py/blob/master/examples/progress.py
在上传的函数里面 有个
progress: ProgressType | None = None,
参数在Java SDK中 https://github.com/minio/minio-java/blob/master/examples/PutObjectProgressBar.java