aditya.siregar 67f1dbc850 init project
2024-05-28 14:14:55 +07:00

46 lines
997 B
Go

package oss
import (
"context"
"fmt"
"furtuna-be/internal/entity"
"furtuna-be/internal/utils/generator"
"path"
"github.com/go-playground/validator/v10"
)
func (s *OssService) UploadFile(ctx context.Context, req *entity.UploadFileRequest) (*entity.UploadFileResponse, error) {
file := req.FileHeader
req.FileSize = file.Size
req.Ext = path.Ext(file.Filename)
validate := validator.New()
if err := validate.Struct(req); err != nil {
return nil, err
}
// Open the file and read its content
srcFile, err := file.Open()
if err != nil {
return nil, err
}
defer srcFile.Close()
fileContent := make([]byte, file.Size)
_, err = srcFile.Read(fileContent)
if err != nil {
return nil, err
}
filePath := fmt.Sprintf("%v/%v%v", req.FolderName, generator.GenerateFileName(), req.Ext)
fileUrl, err := s.ossRepo.UploadFile(ctx, filePath, fileContent)
if err != nil {
return nil, err
}
return &entity.UploadFileResponse{
FilePath: filePath,
FileUrl: fileUrl,
}, nil
}