36 lines
659 B
Go
36 lines
659 B
Go
package uploadfiles
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"lmika.dev/lmika/weiro/models"
|
|
)
|
|
|
|
type Provider struct {
|
|
baseDir string
|
|
}
|
|
|
|
func New(baseDir string) *Provider {
|
|
return &Provider{
|
|
baseDir: baseDir,
|
|
}
|
|
}
|
|
|
|
func (p *Provider) AdoptFile(site models.Site, up models.Upload, filename string) error {
|
|
baseDir := filepath.Join(p.baseDir, site.GUID,
|
|
fmt.Sprintf("%04d", up.CreatedAt.Year()),
|
|
fmt.Sprintf("%02d", up.CreatedAt.Month()))
|
|
|
|
if err := os.MkdirAll(baseDir, 0755); err != nil {
|
|
return err
|
|
}
|
|
|
|
targetFilename := filepath.Join(baseDir, up.GUID)
|
|
if err := os.Rename(filename, targetFilename); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|