filegate/files/filemanager.go

64 lines
1.8 KiB
Go
Raw Normal View History

2023-07-29 06:01:46 +00:00
package files
import (
"context"
"log"
2023-12-30 14:28:54 +00:00
"mime/multipart"
"github.com/minio/minio-go/v7"
2023-12-30 14:28:54 +00:00
"github.com/spf13/viper"
"github.com/google/uuid"
"git.jmbit.de/filegate/filegate/db"
"git.jmbit.de/filegate/filegate/files/localfiles"
2023-07-29 06:01:46 +00:00
)
2023-12-30 14:28:54 +00:00
func UploadFile(file *multipart.FileHeader, name string, url string, comment string) (uint, error) {
ctx := context.Background()
2023-12-30 14:28:54 +00:00
blob := uuid.NewString()
fileReader, err := file.Open()
2023-08-07 17:02:27 +00:00
if err != nil {
2023-12-30 14:28:54 +00:00
log.Printf("Could not create File object: %v \n", err)
return 0, err
}
contentType := file.Header.Get("ContentType")
2023-12-30 14:28:54 +00:00
fileID, err := db.CreateFile(name, url, comment, blob)
if err != nil {
log.Printf("Could not create File object: %v \n", err)
return fileID, err
2023-08-07 17:02:27 +00:00
}
2023-12-30 14:28:54 +00:00
db.UpdateOriginalName(fileID, file.Filename)
if viper.GetString("localfs") == "" {
objectInfo, err := MinioClient.PutObject(ctx, viper.GetString("minio.bucket"), blob, fileReader, file.Size,
minio.PutObjectOptions{ContentType: contentType})
if err != nil {
log.Printf("Could not create File object: %v \n", err)
return 0, err
}
log.Printf("Successfully uploaded %s of size %d\n", blob, objectInfo.Size)
if err != nil {
log.Println(err)
return 0, err
}
log.Printf("Successfully uploaded %s of size %d\n", blob, objectInfo.Size)
} else {
err := localfiles.PutObject(viper.GetString("localfs"), blob, fileReader)
if err != nil {
log.Printf("Could not create File object: %v \n", err)
return 0, err
}
}
// go service.RunStaticAnalysis(fileID)
2023-12-30 14:28:54 +00:00
return fileID, nil
2023-08-07 17:02:27 +00:00
}
// GetFile returns a pointer to a File stored in Minio by passing it the UUID ("Blob"-ID) of the file
func GetFile(uuid string) (*minio.Object, error) {
ctx := context.Background()
2023-12-28 17:23:27 +00:00
object, err := MinioClient.GetObject(ctx, viper.GetString("mino.bucket"), uuid, minio.GetObjectOptions{})
return object, err
}