mirror of
				https://gitee.com/dromara/mayfly-go
				synced 2025-11-04 08:20:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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:"T"`
 | 
						|
}
 | 
						|
 | 
						|
func (f *File) ReqConfs() *req.Confs {
 | 
						|
	reqs := [...]*req.Conf{
 | 
						|
		req.NewGet("/detail/:keys", f.GetFileByKeys).DontNeedToken(),
 | 
						|
 | 
						|
		req.NewGet("/:key", f.GetFileContent).DontNeedToken().NoRes(),
 | 
						|
 | 
						|
		req.NewPost("/upload", f.Upload).Log(req.NewLogSave("file-文件上传")),
 | 
						|
 | 
						|
		req.NewDelete("/:key", f.Remove).Log(req.NewLogSave("file-文件删除")),
 | 
						|
	}
 | 
						|
 | 
						|
	return req.NewConfs("/sys/files", reqs[:]...)
 | 
						|
}
 | 
						|
 | 
						|
func (f *File) GetFileByKeys(rc *req.Ctx) {
 | 
						|
	keysStr := rc.PathParam("keys")
 | 
						|
	biz.NotEmpty(keysStr, "keys cannot be empty")
 | 
						|
 | 
						|
	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 cannot be empty")
 | 
						|
 | 
						|
	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, "read file error: %s")
 | 
						|
	file, err := multipart.NextPart()
 | 
						|
	biz.ErrIsNilAppendErr(err, "read file error: %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")))
 | 
						|
}
 |