package storage import "io" import "os" import "path/filepath" type FileStore struct { BaseDir string } func (fs FileStore) Ensure() error { return os.MkdirAll(fs.BaseDir, 0o755) } func (fs FileStore) Save(name string, r io.Reader) (string, int64, error) { var err error var file *os.File var path string var n int64 err = fs.Ensure() if err != nil { return "", 0, err } path = filepath.Join(fs.BaseDir, name) file, err = os.Create(path) if err != nil { return "", 0, err } defer file.Close() n, err = io.Copy(file, r) return path, n, err } func (fs FileStore) Open(path string) (*os.File, error) { return os.Open(path) }