Files
mayfly-go/server/internal/file/api/file.go

54 lines
1.3 KiB
Go
Raw Normal View History

package api
import (
"mayfly-go/internal/file/api/vo"
"mayfly-go/internal/file/application"
"mayfly-go/pkg/biz"
"mayfly-go/pkg/model"
"mayfly-go/pkg/req"
"strings"
)
type File struct {
FileApp application.File `inject:""`
}
func (f *File) GetFileByKeys(rc *req.Ctx) {
keysStr := rc.PathParam("keys")
biz.NotEmpty(keysStr, "keys不能为空")
var files []vo.SimpleFile
err := f.FileApp.ListByCondToAny(model.NewCond().In("file_key", strings.Split(keysStr, ",")), &files)
biz.ErrIsNil(err)
rc.ResData = files
}
func (f *File) GetFileContent(rc *req.Ctx) {
key := rc.PathParam("key")
biz.NotEmpty(key, "key不能为空")
filename, reader, err := f.FileApp.GetReader(rc.MetaCtx, key)
if err != nil {
rc.GetWriter().Write([]byte(err.Error()))
return
}
defer reader.Close()
rc.Download(reader, filename)
}
func (f *File) Upload(rc *req.Ctx) {
multipart, err := rc.GetRequest().MultipartReader()
biz.ErrIsNilAppendErr(err, "读取文件失败: %s")
file, err := multipart.NextPart()
biz.ErrIsNilAppendErr(err, "读取文件失败: %s")
defer file.Close()
fileKey, err := f.FileApp.Upload(rc.MetaCtx, rc.Query("fileKey"), file.FileName(), file)
biz.ErrIsNil(err)
rc.ResData = fileKey
}
func (f *File) Remove(rc *req.Ctx) {
biz.ErrIsNil(f.FileApp.Remove(rc.MetaCtx, rc.PathParam("key")))
}