Started working on the view upload page
This commit is contained in:
parent
0a9af9cde8
commit
48f39133d7
18 changed files with 327 additions and 45 deletions
32
providers/uploadfiles/exif.go
Normal file
32
providers/uploadfiles/exif.go
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package uploadfiles
|
||||
|
||||
import (
|
||||
"emperror.dev/errors"
|
||||
"github.com/barasher/go-exiftool"
|
||||
"lmika.dev/lmika/weiro/models"
|
||||
)
|
||||
|
||||
func (p *Provider) StripeEXIFData(site models.Site, up models.Upload) error {
|
||||
uploadFilename := p.uploadFileName(site, up)
|
||||
|
||||
et, err := exiftool.NewExiftool()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer et.Close()
|
||||
|
||||
fileInfos := et.ExtractMetadata(uploadFilename)
|
||||
if len(fileInfos) == 0 {
|
||||
return errors.New("no exif data found")
|
||||
}
|
||||
fileInfo := fileInfos[0]
|
||||
fileInfo.ClearAll()
|
||||
|
||||
fileOut := []exiftool.FileMetadata{fileInfo}
|
||||
et.WriteMetadata(fileOut)
|
||||
if fileOut[0].Err != nil {
|
||||
return fileOut[0].Err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package uploadfiles
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
|
|
@ -19,17 +19,24 @@ func New(baseDir string) *Provider {
|
|||
}
|
||||
|
||||
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()))
|
||||
fullPath := p.uploadFileName(site, up)
|
||||
baseDir := filepath.Dir(fullPath)
|
||||
|
||||
if err := os.MkdirAll(baseDir, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
targetFilename := filepath.Join(baseDir, up.GUID)
|
||||
if err := os.Rename(filename, targetFilename); err != nil {
|
||||
if err := os.Rename(filename, fullPath); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Provider) OpenUpload(site models.Site, up models.Upload) (io.ReadCloser, error) {
|
||||
fullPath := p.uploadFileName(site, up)
|
||||
return os.Open(fullPath)
|
||||
}
|
||||
|
||||
func (p *Provider) uploadFileName(site models.Site, up models.Upload) string {
|
||||
return filepath.Join(p.baseDir, site.GUID, up.Slug)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue