core

package
v1.1.13 Latest Latest
Warning

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

Go to latest
Published: May 29, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrFileNotFound      = os.ErrNotExist
	ErrPermissionDenied  = os.ErrPermission
	ErrInvalidPath       = os.ErrInvalid
	ErrDirectoryNotEmpty = os.ErrExist
	ErrFileAlreadyExists = os.ErrExist
)

常见错误定义

Functions

func CalculateChecksum

func CalculateChecksum(data []byte, algorithm string) (string, error)

CalculateChecksum 计算数据的校验和

func CalculateChecksumFromReader

func CalculateChecksumFromReader(reader io.Reader, algorithm string) (string, error)

CalculateChecksumFromReader 从数据流计算校验和

func DetectMimeType

func DetectMimeType(filename string, data []byte) string

DetectMimeType 尝试检测文件的MIME类型

Types

type File

type File interface {
	// Path 返回文件的路径
	Path() string

	// Name 返回文件的名称(不包含路径)
	Name() string

	// Extension 返回文件的扩展名
	Extension() string

	// Size 返回文件的大小(字节)
	Size() int64

	// LastModified 返回文件的最后修改时间
	LastModified() time.Time

	// IsDirectory 判断是否为目录
	IsDirectory() bool

	// Read 读取文件内容
	Read(ctx context.Context) ([]byte, error)

	// ReadStream 获取文件的读取流
	ReadStream(ctx context.Context) (io.ReadCloser, error)

	// MimeType 返回文件的MIME类型
	MimeType() string

	// Visibility 返回文件的可见性(public 或 private)
	Visibility() string

	// URL 获取文件的URL(如果适用)
	URL() string

	// TemporaryURL 获取文件的临时URL(带有过期时间)
	TemporaryURL(ctx context.Context, expiration time.Duration) (string, error)

	// Metadata 获取文件的元数据
	Metadata() map[string]interface{}
}

File 表示一个文件对象

type FileInfo

type FileInfo struct {
	// 文件路径
	FilePath string `json:"path"`
	// 文件名
	FileName string `json:"name"`
	// 文件大小(字节)
	FileSize int64 `json:"size"`
	// 是否为目录
	IsDir bool `json:"is_directory"`
	// 最后修改时间
	ModTime time.Time `json:"modified_at"`
	// MIME类型
	ContentType string `json:"content_type"`
	// 可见性
	FileVisibility string `json:"visibility"`
	// 元数据
	MetaData map[string]interface{} `json:"metadata,omitempty"`
}

FileInfo 包含文件的基本信息

type FileSystem

type FileSystem interface {
	// Get 获取指定路径的文件
	Get(ctx context.Context, path string) (File, error)

	// Exists 检查文件是否存在
	Exists(ctx context.Context, path string) (bool, error)

	// Write 写入文件内容
	Write(ctx context.Context, path string, content []byte, options ...WriteOption) error

	// WriteStream 通过流写入文件
	WriteStream(ctx context.Context, path string, content io.Reader, options ...WriteOption) error

	// Delete 删除文件
	Delete(ctx context.Context, path string) error

	// DeleteDirectory 删除目录及其内容
	DeleteDirectory(ctx context.Context, path string) error

	// CreateDirectory 创建目录
	CreateDirectory(ctx context.Context, path string, options ...WriteOption) error

	// Files 列出目录下的所有文件
	Files(ctx context.Context, directory string) ([]File, error)

	// AllFiles 递归列出目录下的所有文件
	AllFiles(ctx context.Context, directory string) ([]File, error)

	// Directories 列出目录下的所有子目录
	Directories(ctx context.Context, directory string) ([]string, error)

	// AllDirectories 递归列出目录下的所有子目录
	AllDirectories(ctx context.Context, directory string) ([]string, error)

	// Copy 复制文件
	Copy(ctx context.Context, source, destination string) error

	// Move 移动文件
	Move(ctx context.Context, source, destination string) error

	// Size 获取文件大小
	Size(ctx context.Context, path string) (int64, error)

	// LastModified 获取文件修改时间
	LastModified(ctx context.Context, path string) (time.Time, error)

	// MimeType 获取文件MIME类型
	MimeType(ctx context.Context, path string) (string, error)

	// SetVisibility 设置文件可见性
	SetVisibility(ctx context.Context, path, visibility string) error

	// Visibility 获取文件可见性
	Visibility(ctx context.Context, path string) (string, error)

	// URL 获取文件URL
	URL(ctx context.Context, path string) string

	// TemporaryURL 获取临时URL
	TemporaryURL(ctx context.Context, path string, expiration time.Duration) (string, error)

	// Checksum 计算文件校验和
	Checksum(ctx context.Context, path string, algorithm string) (string, error)
}

FileSystem 文件存储系统接口

type Metadata

type Metadata struct {
	// Path 文件路径
	Path string `json:"path"`

	// Name 文件名
	Name string `json:"name"`

	// Extension 文件扩展名
	Extension string `json:"extension"`

	// Size 文件大小(字节)
	Size int64 `json:"size"`

	// LastModified 最后修改时间
	LastModified time.Time `json:"last_modified"`

	// MimeType 文件MIME类型
	MimeType string `json:"mime_type"`

	// Visibility 文件可见性
	Visibility string `json:"visibility"`

	// Checksum 文件校验和
	Checksum string `json:"checksum,omitempty"`

	// IsDirectory 是否为目录
	IsDirectory bool `json:"is_directory"`

	// Custom 自定义元数据
	Custom map[string]interface{} `json:"custom,omitempty"`
}

Metadata 文件元数据管理

func NewMetadata

func NewMetadata(path string) *Metadata

NewMetadata 创建新的文件元数据对象

func (*Metadata) WithChecksum

func (m *Metadata) WithChecksum(checksum string) *Metadata

WithChecksum 设置校验和

func (*Metadata) WithCustom

func (m *Metadata) WithCustom(key string, value interface{}) *Metadata

WithCustom 设置自定义元数据

func (*Metadata) WithIsDirectory

func (m *Metadata) WithIsDirectory(isDirectory bool) *Metadata

WithIsDirectory 设置是否为目录

func (*Metadata) WithLastModified

func (m *Metadata) WithLastModified(lastModified time.Time) *Metadata

WithLastModified 设置最后修改时间

func (*Metadata) WithMimeType

func (m *Metadata) WithMimeType(mimeType string) *Metadata

WithMimeType 设置MIME类型

func (*Metadata) WithSize

func (m *Metadata) WithSize(size int64) *Metadata

WithSize 设置文件大小

func (*Metadata) WithVisibility

func (m *Metadata) WithVisibility(visibility string) *Metadata

WithVisibility 设置可见性

type WriteOption

type WriteOption func(*WriteOptions)

WriteOption 写入文件的选项

func WithMetadata

func WithMetadata(metadata map[string]interface{}) WriteOption

WithMetadata 设置文件元数据选项

func WithMimeType

func WithMimeType(mimeType string) WriteOption

WithMimeType 设置文件MIME类型选项

func WithOverwrite

func WithOverwrite(overwrite bool) WriteOption

WithOverwrite 设置是否覆盖已存在文件选项

func WithPermissions

func WithPermissions(permissions os.FileMode) WriteOption

WithPermissions 设置文件权限选项

func WithVisibility

func WithVisibility(visibility string) WriteOption

WithVisibility 设置文件可见性选项

type WriteOptions

type WriteOptions struct {
	// 文件可见性:public 或 private
	Visibility string

	// 文件元数据
	Metadata map[string]interface{}

	// 文件权限
	Permissions os.FileMode

	// MIME类型
	MimeType string

	// 是否覆盖已存在的文件
	Overwrite bool
}

WriteOptions 写入文件的选项集合

func DefaultWriteOptions

func DefaultWriteOptions() *WriteOptions

DefaultWriteOptions 返回默认的写入选项

Jump to

Keyboard shortcuts

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