初始
This commit is contained in:
57
library/upload/local.go
Normal file
57
library/upload/local.go
Normal file
@ -0,0 +1,57 @@
|
||||
package upload
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/ghttp"
|
||||
"github.com/tiger1103/gfast/v3/api/v1/system"
|
||||
"github.com/tiger1103/gfast/v3/internal/app/common/consts"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Local struct {
|
||||
}
|
||||
|
||||
func (s *Local) Upload(ctx context.Context, file *ghttp.UploadFile) (result system.UploadResponse, err error) {
|
||||
if file == nil {
|
||||
err = errors.New("文件必须!")
|
||||
return
|
||||
}
|
||||
r := g.RequestFromCtx(ctx)
|
||||
urlPerfix := fmt.Sprintf("http://%s/", r.Host)
|
||||
p := strings.Trim(consts.UploadPath, "/")
|
||||
sp := s.getStaticPath(ctx)
|
||||
if sp != "" {
|
||||
sp = strings.Trim(sp, "/")
|
||||
}
|
||||
nowData := time.Now().Format("2006-01-02")
|
||||
// 包含静态文件夹的路径
|
||||
fullDirPath := sp + "/" + p + "/" + nowData
|
||||
fileName, err := file.Save(fullDirPath, true)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// 不含静态文件夹的路径
|
||||
fullPath := p + "/" + nowData + "/" + fileName
|
||||
|
||||
result = system.UploadResponse{
|
||||
Size: file.Size,
|
||||
Path: fullPath,
|
||||
FullPath: urlPerfix + fullPath,
|
||||
Name: file.Filename,
|
||||
Type: file.Header.Get("Content-type"),
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 静态文件夹目录
|
||||
func (s *Local) getStaticPath(ctx context.Context) string {
|
||||
value, _ := g.Cfg().Get(ctx, "server.serverRoot")
|
||||
if !value.IsEmpty() {
|
||||
return value.String()
|
||||
}
|
||||
return ""
|
||||
}
|
Reference in New Issue
Block a user