74 lines
1.5 KiB
Go
74 lines
1.5 KiB
Go
package http
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"mime/multipart"
|
|
"path"
|
|
"strings"
|
|
|
|
"go-common/app/admin/main/up/conf"
|
|
"go-common/app/admin/main/up/service"
|
|
"go-common/library/ecode"
|
|
"go-common/library/log"
|
|
"go-common/library/net/http/blademaster"
|
|
"regexp"
|
|
"time"
|
|
)
|
|
|
|
//由数字、26个英文字母或者下划线组成的字符串
|
|
var reg = regexp.MustCompile(`^\w+$`)
|
|
|
|
// upload
|
|
func upload(c *blademaster.Context) {
|
|
var (
|
|
fileTpye string
|
|
file multipart.File
|
|
header *multipart.FileHeader
|
|
fileName string
|
|
body []byte
|
|
location string
|
|
err error
|
|
res interface{}
|
|
errMsg string
|
|
)
|
|
|
|
switch {
|
|
default:
|
|
if file, header, err = c.Request.FormFile("file"); err != nil {
|
|
errMsg = err.Error()
|
|
err = ecode.RequestErr
|
|
log.Error("c.Request().FormFile(\"file\") error(%v)", err)
|
|
break
|
|
}
|
|
defer file.Close()
|
|
fileName = header.Filename
|
|
fileTpye = strings.TrimPrefix(path.Ext(fileName), ".")
|
|
if body, err = ioutil.ReadAll(file); err != nil {
|
|
errMsg = err.Error()
|
|
err = ecode.RequestErr
|
|
log.Error("ioutil.ReadAll(c.Request().Body) error(%v)", err)
|
|
break
|
|
}
|
|
// 如果不符合规则,就不用文件名
|
|
if !reg.MatchString(fileName) {
|
|
fileName = ""
|
|
}
|
|
if location, err = Svc.Upload(c, fileName, fileTpye, time.Now(), body, conf.Conf.BfsConf); err != nil {
|
|
errMsg = err.Error()
|
|
break
|
|
}
|
|
|
|
res = struct {
|
|
URL string `json:"url"`
|
|
}{
|
|
location,
|
|
}
|
|
}
|
|
|
|
if err != nil {
|
|
service.BmHTTPErrorWithMsg(c, err, errMsg)
|
|
} else {
|
|
c.JSON(res, err)
|
|
}
|
|
}
|