local

package
v4.2.8 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2025 License: AGPL-3.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidPath 路径无效错误
	ErrInvalidPath = errors.New("无效的文件路径")

	// ErrPermissionDenied 权限拒绝错误
	ErrPermissionDenied = errors.New("权限拒绝")

	// ErrDirectoryExists 目录已存在错误
	ErrDirectoryExists = errors.New("目录已存在")

	// ErrFileExists 文件已存在错误
	ErrFileExists = errors.New("文件已存在")

	// ErrCyclicCopy 循环复制错误
	ErrCyclicCopy = errors.New("目标是源的子目录,无法操作")
)

自定义错误类型

Functions

func GetFileOwnership added in v4.2.5

func GetFileOwnership(path string) (uid, gid int, err error)

GetFileOwnership 获取文件的所有者和组信息 参数:

  • path: 文件路径

返回:

  • uid: 用户ID
  • gid: 组ID
  • error: 错误信息

func SetFileOwnership added in v4.2.5

func SetFileOwnership(path string, uid, gid int) error

SetFileOwnership 设置文件的所有者和组 参数:

  • path: 文件路径
  • uid: 用户ID
  • gid: 组ID

返回:

  • error: 错误信息

Types

type Addition

type Addition struct {
	driver.RootPath
	// Thumbnail 是否启用缩略图功能
	// 启用后,图片和视频文件将生成缩略图
	Thumbnail bool `json:"thumbnail" required:"true" help:"启用缩略图功能,支持图片和视频文件"`

	// ThumbCacheFolder 缩略图缓存文件夹路径
	// 如果为空,则不会缓存缩略图到磁盘,每次请求都会重新生成
	// 建议配置缓存目录以提高性能
	ThumbCacheFolder string `json:"thumb_cache_folder" help:"缩略图缓存文件夹路径,留空则不缓存缩略图,建议配置以提高性能"`

	// ThumbConcurrency 生成缩略图的并发数
	// 控制可以同时生成多少个缩略图,避免系统资源过度消耗
	// 设置为0表示无限制,但可能导致系统负载过高
	ThumbConcurrency string `` /* 150-byte string literal not displayed */

	// VideoThumbPos 视频缩略图位置
	// 如果是数字(整数或浮点数),表示视频的秒数
	// 如果以'%'结尾,表示视频时长的百分比
	// 例如:10表示第10秒,20%表示视频时长的20%位置
	VideoThumbPos string `` /* 157-byte string literal not displayed */

	// ShowHidden 是否显示隐藏文件和文件夹
	// 在Unix/Linux系统中,以点(.)开头的文件被视为隐藏文件
	// 在Windows系统中,通过文件属性的FILE_ATTRIBUTE_HIDDEN标志判断
	ShowHidden bool `json:"show_hidden" default:"false" required:"false" help:"是否显示隐藏的文件和文件夹,默认不显示"`

	// MkdirPerm 创建文件夹的权限,八进制表示
	// 仅在Unix/Linux系统中有效
	// 默认为777,表示所有用户都有读写执行权限
	MkdirPerm string `` /* 129-byte string literal not displayed */

	// RecycleBinPath 回收站路径
	// 如果为空或保持'delete permanently',则永久删除文件
	// 否则将删除的文件移动到指定的回收站目录
	RecycleBinPath string `` /* 164-byte string literal not displayed */

	// ThumbCacheMaxAge 缩略图缓存最大保留时间(秒)
	// 超过此时间的缩略图缓存将在清理时被删除
	// 默认为30天(2592000秒)
	// 设置为0表示不自动清理
	ThumbCacheMaxAge int64 `` /* 133-byte string literal not displayed */

	// ThumbQuality 缩略图质量
	// 取值范围:1-100,值越高质量越好,文件越大
	// 默认为85,通常提供较好的质量和文件大小平衡
	ThumbQuality int `json:"thumb_quality" default:"85" help:"缩略图质量(1-100),值越高质量越好但文件越大,默认85"`
}

Addition 本地存储驱动的额外配置选项

type Local

type Local struct {
	model.Storage
	Addition
	// contains filtered or unexported fields
}

Local 本地存储驱动实现

func (*Local) CleanThumbCache added in v4.2.5

func (d *Local) CleanThumbCache(maxAge int64) (int, error)

CleanThumbCache 清理所有过期的缩略图缓存 参数:

  • maxAge: 最大缓存时间(秒)

返回:

  • int: 清理的文件数量
  • error: 错误信息

func (*Local) ClearThumbCache added in v4.2.5

func (d *Local) ClearThumbCache(filePath string) (bool, error)

ClearThumbCache 清除特定文件的缩略图缓存 参数:

  • filePath: 原始文件路径

返回:

  • bool: 是否成功清除缓存
  • error: 错误信息

func (*Local) Config

func (d *Local) Config() driver.Config

Config 返回驱动配置 实现driver.Driver接口

func (*Local) Copy

func (d *Local) Copy(_ context.Context, srcObj, dstDir model.Obj) error

Copy 复制文件/目录 实现driver.Driver接口

func (*Local) Drop

func (d *Local) Drop(ctx context.Context) error

Drop 释放资源 实现driver.Driver接口

func (*Local) FileInfoToObj

func (d *Local) FileInfoToObj(ctx context.Context, fileInfo fs.FileInfo, reqPath string, dirPath string) model.Obj

FileInfoToObj 将文件信息转换为对象 参数:

  • ctx: 上下文
  • fileInfo: 文件信息
  • reqPath: 请求路径
  • dirPath: 目录完整路径

返回:

  • model.Obj: 文件对象

func (*Local) Get

func (d *Local) Get(ctx context.Context, path string) (model.Obj, error)

Get 获取指定路径的文件对象 实现driver.Driver接口

func (*Local) GetAddition

func (d *Local) GetAddition() driver.Additional

GetAddition 返回额外配置 实现driver.Driver接口

func (*Local) GetSnapshot

func (d *Local) GetSnapshot(ctx context.Context, videoPath string) (imgData *bytes.Buffer, err error)

GetSnapshot 获取视频的缩略图快照 参数:

  • ctx: 上下文,用于取消操作
  • videoPath: 视频文件的完整路径

返回:

  • *bytes.Buffer: 缩略图数据
  • error: 错误信息

func (*Local) Init

func (d *Local) Init(ctx context.Context) error

Init 初始化驱动 实现driver.Driver接口

func (d *Local) Link(ctx context.Context, file model.Obj, args model.LinkArgs) (*model.Link, error)

Link 获取文件链接 实现driver.Driver接口

func (*Local) List

func (d *Local) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]model.Obj, error)

List 列出目录内容 实现driver.Driver接口

func (*Local) MakeDir

func (d *Local) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error

MakeDir 创建目录 实现driver.Driver接口

func (*Local) Move

func (d *Local) Move(ctx context.Context, srcObj, dstDir model.Obj) error

Move 移动文件/目录 实现driver.Driver接口

func (*Local) Put

func (d *Local) Put(ctx context.Context, dstDir model.Obj, stream model.FileStreamer, up driver.UpdateProgress) error

Put 上传文件 实现driver.Driver接口

func (*Local) Remove

func (d *Local) Remove(ctx context.Context, obj model.Obj) error

Remove 删除文件/目录 实现driver.Driver接口

func (*Local) Rename

func (d *Local) Rename(ctx context.Context, srcObj model.Obj, newName string) error

Rename 重命名文件/目录 实现driver.Driver接口

func (*Local) ValidateDriver added in v4.2.5

func (d *Local) ValidateDriver() error

ValidateDriver 验证驱动配置的有效性 实现driver.Driver接口的扩展方法

type NopTokenBucket

type NopTokenBucket struct {
	// contains filtered or unexported fields
}

NopTokenBucket 无操作令牌桶实现 所有操作都会立即成功,不进行实际限流

func NewNopTokenBucket

func NewNopTokenBucket() NopTokenBucket

NewNopTokenBucket 创建一个新的无操作令牌桶

func (NopTokenBucket) Do

func (b NopTokenBucket) Do(_ context.Context, f func() error) error

Do 直接执行函数,不进行限流

func (NopTokenBucket) Put

func (b NopTokenBucket) Put()

Put 无操作

func (NopTokenBucket) Take

func (b NopTokenBucket) Take() <-chan struct{}

Take 立即返回一个已关闭的通道

type StaticTokenBucket

type StaticTokenBucket struct {
	// contains filtered or unexported fields
}

StaticTokenBucket 固定大小的令牌桶实现 初始状态下桶是满的,令牌的获取和归还需要手动控制

func NewStaticTokenBucket

func NewStaticTokenBucket(size int) StaticTokenBucket

NewStaticTokenBucket 创建一个新的固定大小令牌桶 size: 桶的容量(最大令牌数)

func NewStaticTokenBucketWithMigration

func NewStaticTokenBucketWithMigration(oldBucket TokenBucket, size int) StaticTokenBucket

NewStaticTokenBucketWithMigration 创建一个新的令牌桶,并从旧桶迁移令牌 oldBucket: 旧的令牌桶 size: 新桶的容量

func (StaticTokenBucket) Do

func (b StaticTokenBucket) Do(ctx context.Context, f func() error) error

Do 使用令牌执行函数 ctx: 上下文,用于取消操作 f: 要执行的函数

func (StaticTokenBucket) Put

func (b StaticTokenBucket) Put()

Put 归还一个令牌到桶中

func (StaticTokenBucket) Take

func (b StaticTokenBucket) Take() <-chan struct{}

Take 获取一个令牌 注意:当驱动被修改时,通道可能会被关闭 通道关闭后不应再调用Put方法

type TokenBucket

type TokenBucket interface {
	// Take 获取一个令牌,返回一个通道,当有令牌可用时会收到信号
	Take() <-chan struct{}
	// Put 归还一个令牌到桶中
	Put()
	// Do 使用令牌执行函数,自动获取和归还令牌
	Do(context.Context, func() error) error
}

TokenBucket 令牌桶接口,用于限制并发操作

Jump to

Keyboard shortcuts

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