upload

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 24, 2026 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Overview

Package upload 提供文件上传驱动。

本文件提供 OSS(阿里云对象存储)驱动的示例实现。 实际使用时需要引入 OSS SDK 并完善实现。

Package upload 提供文件上传相关的工具能力。

驱动化设计,支持本地存储和云存储(OSS/S3)扩展。

Index

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) BasePath

func (d *LocalDriver) BasePath() string

BasePath 返回基础路径。

func (*LocalDriver) Delete

func (d *LocalDriver) Delete(relPath string) error

Delete 删除本地文件。

func (*LocalDriver) Exists

func (d *LocalDriver) Exists(relPath string) bool

Exists 判断文件是否存在。

func (*LocalDriver) Name

func (d *LocalDriver) Name() string

Name 返回驱动名称。

func (*LocalDriver) Read

func (d *LocalDriver) Read(relPath string) ([]byte, error)

Read 读取文件内容。

func (*LocalDriver) Save

func (d *LocalDriver) Save(file *multipart.FileHeader, relPath string) (string, error)

Save 保存文件到本地。

func (*LocalDriver) URL

func (d *LocalDriver) URL(relPath string, domain bool) string

URL 生成访问 URL。

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 生成逻辑

func NewOSSDriver

func NewOSSDriver(cfg OSSDriverConfig) *OSSDriver

NewOSSDriver 创建 OSS 驱动(示例)。

func (*OSSDriver) Delete

func (d *OSSDriver) Delete(relPath string) error

Delete 删除 OSS 文件(示例实现)。

func (*OSSDriver) Exists

func (d *OSSDriver) Exists(relPath string) bool

Exists 判断 OSS 文件是否存在(示例实现)。

func (*OSSDriver) Name

func (d *OSSDriver) Name() string

Name 返回驱动名称。

func (*OSSDriver) Read

func (d *OSSDriver) Read(relPath string) ([]byte, error)

Read 读取 OSS 文件内容(示例实现)。

func (*OSSDriver) Save

func (d *OSSDriver) Save(file *multipart.FileHeader, relPath string) (string, error)

Save 上传文件到 OSS(示例实现)。

func (*OSSDriver) URL

func (d *OSSDriver) URL(relPath string, domain bool) string

URL 生成 OSS 文件访问 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

type SaveOptions struct {
	PluginCode string
	SiteID     uint
	SubPath    string
	DatePath   bool
}

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) BasePath

func (u *Uploader) BasePath() string

BasePath 返回本地驱动的基础路径(仅本地驱动有效)。

func (*Uploader) DeleteFile

func (u *Uploader) DeleteFile(path string) error

DeleteFile 删除物理文件。

func (*Uploader) Driver

func (u *Uploader) Driver() Driver

Driver 返回当前使用的驱动。

func (*Uploader) FileExists

func (u *Uploader) FileExists(path string) bool

FileExists 判断文件是否存在。

func (*Uploader) GetURL

func (u *Uploader) GetURL(path string, domain bool) string

GetURL 获取文件访问 URL。

func (*Uploader) SaveFile

func (u *Uploader) SaveFile(file *multipart.FileHeader, opts SaveOptions) (*FileInfo, error)

SaveFile 落盘保存上传的 multipart 文件。

func (*Uploader) URLPrefix

func (u *Uploader) URLPrefix() string

URLPrefix 返回 URL 前缀。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL