94 lines
1.6 KiB
Go
94 lines
1.6 KiB
Go
package fsctx
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type WriteMode int
|
|
|
|
const (
|
|
Overwrite WriteMode = iota
|
|
// Append 只适用于本地策略
|
|
Append
|
|
Create
|
|
Nop
|
|
)
|
|
|
|
// FileStream 用户传来的文件
|
|
type FileStream struct {
|
|
Mode WriteMode
|
|
Hidden bool
|
|
LastModified *time.Time
|
|
Metadata map[string]string
|
|
File io.ReadCloser
|
|
Size uint64
|
|
VirtualPath string
|
|
Name string
|
|
MIMEType string
|
|
SavePath string
|
|
}
|
|
|
|
func (file *FileStream) Read(p []byte) (n int, err error) {
|
|
return file.File.Read(p)
|
|
}
|
|
|
|
func (file *FileStream) GetMIMEType() string {
|
|
return file.MIMEType
|
|
}
|
|
|
|
func (file *FileStream) GetSize() uint64 {
|
|
return file.Size
|
|
}
|
|
|
|
func (file *FileStream) Close() error {
|
|
return file.File.Close()
|
|
}
|
|
|
|
func (file *FileStream) GetFileName() string {
|
|
return file.Name
|
|
}
|
|
|
|
func (file *FileStream) GetVirtualPath() string {
|
|
return file.VirtualPath
|
|
}
|
|
|
|
func (file *FileStream) GetMode() WriteMode {
|
|
return file.Mode
|
|
}
|
|
|
|
func (file *FileStream) GetMetadata() map[string]string {
|
|
return file.Metadata
|
|
}
|
|
|
|
func (file *FileStream) GetLastModified() *time.Time {
|
|
return file.LastModified
|
|
}
|
|
|
|
func (file *FileStream) IsHidden() bool {
|
|
return file.Hidden
|
|
}
|
|
|
|
func (file *FileStream) GetSavePath() string {
|
|
return file.SavePath
|
|
}
|
|
|
|
func (file *FileStream) SetSize(size uint64) {
|
|
file.Size = size
|
|
}
|
|
|
|
// FileHeader 上传来的文件数据处理器
|
|
type FileHeader interface {
|
|
io.Reader
|
|
io.Closer
|
|
GetSize() uint64
|
|
GetMIMEType() string
|
|
GetFileName() string
|
|
GetVirtualPath() string
|
|
GetMode() WriteMode
|
|
GetMetadata() map[string]string
|
|
GetLastModified() *time.Time
|
|
IsHidden() bool
|
|
GetSavePath() string
|
|
SetSize(uint64)
|
|
}
|