package oss import ( "context" "enaklo-pos-be/internal/entity" "enaklo-pos-be/internal/utils/generator" "fmt" "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 }