Documentation
¶
Overview ¶
Package upload 提供文件上传驱动。
本文件提供 OSS(阿里云对象存储)驱动的示例实现。 实际使用时需要引入 OSS SDK 并完善实现。
Package upload 提供文件上传相关的工具能力。
驱动化设计,支持本地存储和云存储(OSS/S3)扩展。
Index ¶
- type Driver
- type FileInfo
- type LocalDriver
- func (d *LocalDriver) BasePath() string
- func (d *LocalDriver) Delete(relPath string) error
- func (d *LocalDriver) Exists(relPath string) bool
- func (d *LocalDriver) Name() string
- func (d *LocalDriver) Read(relPath string) ([]byte, error)
- func (d *LocalDriver) Save(file *multipart.FileHeader, relPath string) (string, error)
- func (d *LocalDriver) URL(relPath string, domain bool) string
- type OSSDriver
- func (d *OSSDriver) Delete(relPath string) error
- func (d *OSSDriver) Exists(relPath string) bool
- func (d *OSSDriver) Name() string
- func (d *OSSDriver) Read(relPath string) ([]byte, error)
- func (d *OSSDriver) Save(file *multipart.FileHeader, relPath string) (string, error)
- func (d *OSSDriver) URL(relPath string, domain bool) string
- type OSSDriverConfig
- type SaveOptions
- type Uploader
- func (u *Uploader) BasePath() string
- func (u *Uploader) DeleteFile(path string) error
- func (u *Uploader) Driver() Driver
- func (u *Uploader) FileExists(path string) bool
- func (u *Uploader) GetURL(path string, domain bool) string
- func (u *Uploader) SaveFile(file *multipart.FileHeader, opts SaveOptions) (*FileInfo, error)
- func (u *Uploader) URLPrefix() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Driver ¶
type Driver interface {
// Save 保存文件内容到指定路径,返回访问 URL。
// relPath 是相对路径(不含 basePath),如 "plugin_cms/site_1/media/2024/06/xxx.png"。
Save(file *multipart.FileHeader, relPath string) (url string, err error)
// Delete 删除指定路径的文件。
// relPath 是相对路径,删除失败时返回错误(文件不存在视为成功)。
Delete(relPath string) error
// URL 生成文件的访问 URL。
// relPath 是相对路径,domain 为 true 时返回完整 URL(含域名)。
URL(relPath string, domain bool) string
// Exists 判断文件是否存在。
Exists(relPath string) bool
// Read 读取文件内容(用于下载或处理)。
Read(relPath string) ([]byte, error)
// Name 返回驱动名称(如 "local", "oss")。
Name() string
}
Driver 上传驱动接口,定义存储后端的核心操作。 实现该接口即可切换不同的存储后端(本地、OSS、S3 等)。
type FileInfo ¶
type FileInfo struct {
Filename string
OriginalName string
Path string // 相对路径
URL string // 访问 URL
MimeType string
Size int64
Width int
Height int
}
FileInfo 是 SaveFile 成功后返回的文件元信息。
type LocalDriver ¶
type LocalDriver struct {
// contains filtered or unexported fields
}
LocalDriver 本地文件存储驱动。
func NewLocalDriver ¶
func NewLocalDriver(basePath, urlPrefix string) *LocalDriver
NewLocalDriver 创建本地驱动。
func (*LocalDriver) Save ¶
func (d *LocalDriver) Save(file *multipart.FileHeader, relPath string) (string, error)
Save 保存文件到本地。
type OSSDriver ¶
type OSSDriver struct {
// contains filtered or unexported fields
}
OSSDriver 阿里云 OSS 存储驱动(示例实现)。
注意:本实现为预留接口,实际使用需要: 1. 引入阿里云 OSS SDK: github.com/aliyun/aliyun-oss-go-sdk 2. 完善 Save、Delete、Exists、Read 方法 3. 处理签名 URL 生成逻辑
type OSSDriverConfig ¶
type OSSDriverConfig struct {
Endpoint string // OSS endpoint,如 "oss-cn-hangzhou.aliyuncs.com"
AccessKeyID string // AccessKey ID
AccessKeySecret string // AccessKey Secret
BucketName string // Bucket 名称
BaseURL string // 自定义域名(可选)
}
OSSDriverConfig OSS 驱动配置。
type SaveOptions ¶
SaveOptions 保存文件时的选项。
type Uploader ¶
type Uploader struct {
// contains filtered or unexported fields
}
Uploader 封装文件上传所需的运行时配置和驱动。
func NewUploader ¶
func NewUploader(cfg *config.UploadConfig) *Uploader
NewUploader 基于 *config.UploadConfig 构造一个 Uploader 实例。
func NewUploaderWithDriver ¶
func NewUploaderWithDriver(driver Driver, cfg *config.UploadConfig) *Uploader
NewUploaderWithDriver 使用自定义驱动创建 Uploader。
func (*Uploader) SaveFile ¶
func (u *Uploader) SaveFile(file *multipart.FileHeader, opts SaveOptions) (*FileInfo, error)
SaveFile 落盘保存上传的 multipart 文件。