47 lines
905 B
Go
47 lines
905 B
Go
package picture
|
|
|
|
import (
|
|
"bytes"
|
|
"image"
|
|
"image/jpeg"
|
|
"os"
|
|
|
|
"git.umbach.dev/picture-storage-handler/modules/config"
|
|
"git.umbach.dev/picture-storage-handler/modules/structs"
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func Save(pictureMessage structs.RabbitmqPictureMessage) error {
|
|
img, _, err := image.Decode(bytes.NewReader(pictureMessage.Picture))
|
|
|
|
if err != nil {
|
|
log.Fatalln("imageDecode failed", err)
|
|
return err
|
|
}
|
|
|
|
err = os.Mkdir(config.Cfg.Storage.Path+pictureMessage.UserId, 0755)
|
|
|
|
if err != nil && !os.IsExist(err) {
|
|
log.Infoln("mkdir failed", err)
|
|
return err
|
|
}
|
|
|
|
out, err := os.Create(config.Cfg.Storage.Path + pictureMessage.UserId + "/" + pictureMessage.Filename)
|
|
|
|
if err != nil {
|
|
log.Infoln("osCreate failed", err)
|
|
return err
|
|
}
|
|
|
|
defer out.Close()
|
|
|
|
err = jpeg.Encode(out, img, nil)
|
|
|
|
if err != nil {
|
|
log.Println("jpegEncode failed", err)
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|