38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
// Package storage 提供文件存储引擎抽象层
|
|
// 通过接口解耦文件存储, 支持本地磁盘、MinIO、S3等多种后端
|
|
package storage
|
|
|
|
import (
|
|
"io"
|
|
)
|
|
|
|
// Engine 存储引擎接口
|
|
// 所有存储后端(local/minio/s3/oss)都必须实现此接口
|
|
type Engine interface {
|
|
// Upload 上传文件
|
|
// storageKey: 存储路径标识, reader: 文件内容流, size: 文件大小
|
|
// 返回实际的storageKey和错误
|
|
Upload(storageKey string, reader io.Reader, size int64) error
|
|
|
|
// Download 下载文件
|
|
// 返回文件内容流, 调用方负责关闭
|
|
Download(storageKey string) (io.ReadCloser, error)
|
|
|
|
// Delete 删除文件
|
|
Delete(storageKey string) error
|
|
|
|
// Exists 判断文件是否存在
|
|
Exists(storageKey string) (bool, error)
|
|
|
|
// GetURL 获取文件访问URL
|
|
// 本地存储返回相对路径, 对象存储返回完整URL
|
|
GetURL(storageKey string) string
|
|
}
|
|
|
|
// StorageResult 上传结果
|
|
type StorageResult struct {
|
|
StorageKey string // 存储标识
|
|
Size int64 // 文件大小
|
|
MD5 string // 文件MD5
|
|
}
|