44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
|
|
package storage
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"io"
|
||
|
|
)
|
||
|
|
|
||
|
|
// StorageService 存储服务接口
|
||
|
|
type StorageService interface {
|
||
|
|
// 文件上传
|
||
|
|
UploadFile(ctx context.Context, fileBytes []byte, fileName string) (*UploadResult, error)
|
||
|
|
UploadFromReader(ctx context.Context, reader io.Reader, fileName string, size int64) (*UploadResult, error)
|
||
|
|
|
||
|
|
// 生成上传凭证
|
||
|
|
GenerateUploadToken(ctx context.Context, key string) (string, error)
|
||
|
|
|
||
|
|
// 文件访问
|
||
|
|
GetFileURL(ctx context.Context, key string) string
|
||
|
|
GetPrivateFileURL(ctx context.Context, key string, expires int64) (string, error)
|
||
|
|
|
||
|
|
// 文件管理
|
||
|
|
DeleteFile(ctx context.Context, key string) error
|
||
|
|
FileExists(ctx context.Context, key string) (bool, error)
|
||
|
|
GetFileInfo(ctx context.Context, key string) (*FileInfo, error)
|
||
|
|
}
|
||
|
|
|
||
|
|
// UploadResult 文件上传结果
|
||
|
|
type UploadResult struct {
|
||
|
|
URL string `json:"url"` // 文件访问URL
|
||
|
|
Key string `json:"key"` // 存储键名
|
||
|
|
Size int64 `json:"size"` // 文件大小
|
||
|
|
MimeType string `json:"mime_type"` // 文件类型
|
||
|
|
Hash string `json:"hash"` // 文件哈希值
|
||
|
|
}
|
||
|
|
|
||
|
|
// FileInfo 文件信息
|
||
|
|
type FileInfo struct {
|
||
|
|
Key string `json:"key"` // 存储键名
|
||
|
|
Size int64 `json:"size"` // 文件大小
|
||
|
|
MimeType string `json:"mime_type"` // 文件类型
|
||
|
|
Hash string `json:"hash"` // 文件哈希值
|
||
|
|
PutTime int64 `json:"put_time"` // 上传时间戳
|
||
|
|
}
|