46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
|
package http
|
|||
|
|
|||
|
import (
|
|||
|
"io/ioutil"
|
|||
|
"net/http"
|
|||
|
"time"
|
|||
|
|
|||
|
"go-common/library/ecode"
|
|||
|
"go-common/library/log"
|
|||
|
bm "go-common/library/net/http/blademaster"
|
|||
|
)
|
|||
|
|
|||
|
const maxSize = 1024 * 1024 * 20
|
|||
|
|
|||
|
func upbfs(c *bm.Context) {
|
|||
|
var req = c.Request
|
|||
|
// read the file
|
|||
|
req.ParseMultipartForm(maxSize)
|
|||
|
log.Info("Request Info: %v, %v, %v", req.PostForm, req.Form, req.MultipartForm)
|
|||
|
file, _, err := req.FormFile("file")
|
|||
|
if err != nil {
|
|||
|
renderErrMsg(c, ecode.RequestErr.Code(), "文件为空")
|
|||
|
return
|
|||
|
}
|
|||
|
defer file.Close()
|
|||
|
content, err := ioutil.ReadAll(file)
|
|||
|
if err != nil {
|
|||
|
log.Error("resource uploadFile.ReadAll error(%v)", err)
|
|||
|
return
|
|||
|
}
|
|||
|
// parse file, get type, size
|
|||
|
ftype := http.DetectContentType(content)
|
|||
|
if ftype != "image/jpeg" && ftype != "image/png" && ftype != "image/webp" && ftype != "image/gif" {
|
|||
|
log.Error("filetype not allow file type(%s)", ftype)
|
|||
|
renderErrMsg(c, ecode.RequestErr.Code(), "检查文件类型,需为图片")
|
|||
|
return
|
|||
|
}
|
|||
|
fsize := len(content)
|
|||
|
if fsize > maxSize {
|
|||
|
renderErrMsg(c, ecode.RequestErr.Code(), "文件过大,不支持超过20M的文件")
|
|||
|
return
|
|||
|
}
|
|||
|
// upload file to BFS
|
|||
|
c.JSON(tvSrv.Upload(c, "", ftype, time.Now().Unix(), content))
|
|||
|
}
|