Cloudreve/pkg/filesystem/filesystem.go

48 lines
770 B
Go
Raw Normal View History

2019-11-16 00:37:42 -05:00
package filesystem
import (
"cloudreve/models"
"io"
)
// FileData 上传来的文件数据处理器
type FileData interface {
io.Reader
io.Closer
GetSize() uint64
GetMIMEType() string
2019-11-16 03:05:10 -05:00
GetFileName() string
2019-11-16 00:37:42 -05:00
}
// FileSystem 管理文件的文件系统
type FileSystem struct {
2019-11-16 03:05:10 -05:00
/*
文件系统所有者
*/
2019-11-16 00:37:42 -05:00
User *model.User
2019-11-16 03:05:10 -05:00
/*
钩子函数
*/
// 上传文件前
BeforeUpload func(fs *FileSystem, file FileData) error
// 上传文件后
AfterUpload func(fs *FileSystem) error
// 文件验证失败后
ValidateFailed func(fs *FileSystem) error
/*
文件系统处理适配器
*/
2019-11-16 00:37:42 -05:00
}
// Upload 上传文件
2019-11-16 03:05:10 -05:00
func (fs *FileSystem) Upload(file FileData) (err error) {
err = fs.BeforeUpload(fs, file)
if err != nil {
return err
}
2019-11-16 00:37:42 -05:00
return nil
}