首次提交
This commit is contained in:
0
internal/service/.gitkeep
Normal file
0
internal/service/.gitkeep
Normal file
70
internal/service/s_3.go
Normal file
70
internal/service/s_3.go
Normal file
@@ -0,0 +1,70 @@
|
||||
// ================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// You can delete these comments if you wish manually maintain this interface file.
|
||||
// ================================================================================
|
||||
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"net/url"
|
||||
"time"
|
||||
|
||||
"github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
type (
|
||||
IS3 interface {
|
||||
// GetFileUrl 生成指向 S3 存储桶中指定文件的预签名 URL
|
||||
// 预签名 URL 可用于在有限时间内访问 S3 存储桶中的文件
|
||||
// 支持从缓存中获取预签名 URL,以减少重复请求
|
||||
GetFileUrl(ctx context.Context, name string, _expires ...time.Duration) (presignedURL *url.URL, err error)
|
||||
// PutFileUrl 生成一个用于上传文件到指定存储桶的预签名 URL
|
||||
// 预签名 URL 的有效期默认为 10 分钟
|
||||
PutFileUrl(ctx context.Context, name string) (presignedURL *url.URL, err error)
|
||||
// ListBuckets 获取当前 S3 客户端可访问的所有存储桶列表
|
||||
// 出错时返回 nil
|
||||
ListBuckets(ctx context.Context) []minio.BucketInfo
|
||||
// PutObject 上传文件到指定的存储桶中
|
||||
// 支持指定文件大小,未指定时将读取文件直到结束
|
||||
PutObject(ctx context.Context, f io.Reader, name string, _size ...int64) (res minio.UploadInfo, err error)
|
||||
// RemoveObject 从指定存储桶中删除指定名称的文件
|
||||
RemoveObject(ctx context.Context, name string) (err error)
|
||||
// ListObjects 获取指定存储桶中指定前缀的文件列表
|
||||
// 返回一个包含文件信息的通道
|
||||
ListObjects(ctx context.Context, prefix string) (res <-chan minio.ObjectInfo, err error)
|
||||
// StatObject 获取指定存储桶中指定文件的元数据信息
|
||||
StatObject(ctx context.Context, objectName string) (res minio.ObjectInfo, err error)
|
||||
// GetUrl 获取文件的访问地址
|
||||
// 支持返回默认文件地址,根据 SSL 配置生成不同格式的 URL
|
||||
GetUrl(filePath string, defaultFile ...string) (url string)
|
||||
// GetPath 从文件访问 URL 中提取文件路径
|
||||
GetPath(url string) (filePath string)
|
||||
// GetCdnUrl 通过文件名,获取直连地址
|
||||
GetCdnUrl(file string) string
|
||||
// CopyObject 在指定存储桶内复制文件
|
||||
// bucketName 存储桶名称
|
||||
// dstStr 目标文件路径
|
||||
// srcStr 源文件路径
|
||||
// 返回操作过程中可能出现的错误
|
||||
CopyObject(ctx context.Context, dstStr string, srcStr string) (err error)
|
||||
// Rename 重命名文件
|
||||
Rename(ctx context.Context, oldName string, newName string) (err error)
|
||||
}
|
||||
)
|
||||
|
||||
var (
|
||||
localS3 IS3
|
||||
)
|
||||
|
||||
func S3() IS3 {
|
||||
if localS3 == nil {
|
||||
panic("implement not found for interface IS3, forgot register?")
|
||||
}
|
||||
return localS3
|
||||
}
|
||||
|
||||
func RegisterS3(i IS3) {
|
||||
localS3 = i
|
||||
}
|
||||
Reference in New Issue
Block a user