Add log and add more error code

dev
aimerforreimu 6 years ago
parent fd30378d7c
commit 89ddd73f48
  1. 19
      auxpiAll/e/code.go
  2. 23
      auxpiAll/e/msg.go
  3. 10
      auxpiAll/logging.go
  4. 24
      controllers/api/upload.go
  5. 26
      controllers/upload/authUpLoad.go
  6. 22
      utils/upload.go
  7. 4
      views/layouts/app.tpl
  8. 1
      views/upload/uploadScript.tpl

@ -0,0 +1,19 @@
package e
const (
SUCCESS = 200
ERROR = 500
INVALID_PARAMS = 400
METHOD_NOT_ALLOWED = 405
ERROR_FILE_IS_EMPTY = 10001
ERROR_FILE_IS_TOO_LARGE = 10002
ERROR_CAN_NOT_GET_IMG_URL = 10003
ERROR_TOO_MANY_IMAGES = 10004
ERROR_FILE_TYPE = 10005
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
ERROR_ACCESS_DENIED = 20002
)

@ -0,0 +1,23 @@
package e
var MsgFlags = map[int]string {
SUCCESS : "ok",
ERROR : "fail",
INVALID_PARAMS : "请求参数错误",
ERROR_FILE_IS_EMPTY : "上传文件为空",
ERROR_FILE_IS_TOO_LARGE : "上传文件太大",
ERROR_FILE_TYPE: "文件类型错误",
ERROR_CAN_NOT_GET_IMG_URL : "无法获取第三方图床 URL",
ERROR_TOO_MANY_IMAGES : "上传图片太多",
ERROR_AUTH_CHECK_TOKEN_FAIL : "Token鉴权失败",
ERROR_ACCESS_DENIED : "禁止访问",
}
func GetMsg(code int) string {
msg, ok := MsgFlags[code]
if ok {
return msg
}
return MsgFlags[ERROR]
}

@ -0,0 +1,10 @@
package auxpi
import "github.com/astaxie/beego/logs"
func init() {
logs.SetLogger(logs.AdapterFile,`{"filename":"auxpiRun.log","level":6,"maxlines":0,"maxsize":0,"daily":true,"maxdays":10}`)
logs.Async(1e3)
logs.EnableFuncCallDepth(true)
}

@ -2,6 +2,7 @@ package api
import (
"auxpi/auxpiAll"
"auxpi/auxpiAll/e"
"auxpi/bootstrap"
"auxpi/utils"
"github.com/astaxie/beego"
@ -28,7 +29,7 @@ func (this *ApiUpLoadController) ApiUpLoadHandle() {
//需要进行验证
apiToken := this.GetString("token")
if apiToken != siteConfig.ApiToken {
this.errorResp(403, "Forbidden")
this.errorResp(e.ERROR_AUTH_CHECK_TOKEN_FAIL)
return
}
}
@ -36,10 +37,10 @@ func (this *ApiUpLoadController) ApiUpLoadHandle() {
apiSelect := this.GetString("apiSelect")
f, h, err := this.GetFile("image")
if f == nil {
this.errorResp(500, "No files were uploaded.")
this.errorResp(e.ERROR_FILE_IS_EMPTY)
}
if h.Size > siteConfig.SiteUpLoadMaxSize<<20 {
this.errorResp(500, "File is too large.")
this.errorResp(e.ERROR_FILE_IS_TOO_LARGE)
}
defer f.Close()
if err != nil {
@ -52,17 +53,18 @@ func (this *ApiUpLoadController) ApiUpLoadHandle() {
//如果有返回值
if strings.HasPrefix(url, "http") {
this.succResp(200, "上传成功", url, h.Filename)
this.succResp(200, url, h.Filename)
return
}
this.errorResp(e.ERROR_CAN_NOT_GET_IMG_URL)
}
//返回失败 json
this.errorResp(500, "上传失败")
this.errorResp(e.ERROR_FILE_TYPE)
return
}
func (this *ApiUpLoadController) ErrorCapture() {
this.errorResp(405, "Method not allowed")
this.errorResp(e.METHOD_NOT_ALLOWED)
}
//验证文件后缀&文件MIME
@ -89,22 +91,22 @@ func (this *ApiUpLoadController) validate(contentType string, fileName string) b
}
//错误resp
func (this *ApiUpLoadController) errorResp(code int, msg string) {
func (this *ApiUpLoadController) errorResp(code int) {
result := &auxpi.ErrorJson{}
result.Code = code
result.Msg = msg
result.Msg = e.GetMsg(code)
this.Data["json"] = result
this.ServeJSON()
}
//成功 resp
func (this *ApiUpLoadController) succResp(code int, msg string, url string, name string) {
func (this *ApiUpLoadController) succResp(code int, url string, name string) {
result := &auxpi.ResultJson{}
result.Code = code
result.Msg = msg
result.Msg = e.GetMsg(code)
result.Data.Url = url
result.Data.Name = name
//beego.Alert(result)
this.Data["json"] = result
this.ServeJSON()
}

@ -2,9 +2,11 @@ package controllers
import (
"auxpi/auxpiAll"
"auxpi/auxpiAll/e"
"auxpi/bootstrap"
"auxpi/utils"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"log"
"strings"
)
@ -32,11 +34,13 @@ func (this *UpLoadController) AuthUpLoadHandle() {
}
//是否为空文件
if f == nil {
this.errorResp(500, "No files were uploaded.")
this.errorResp(e.ERROR_FILE_IS_EMPTY)
return
}
//检测是否超出大小限制
if h.Size > siteConfig.SiteUpLoadMaxSize<<20 {
this.errorResp(500, "File is too large.")
this.errorResp(e.ERROR_FILE_IS_TOO_LARGE)
return
}
//验证
validate := this.Validate(h.Header.Get("Content-Type"), h.Filename)
@ -44,32 +48,34 @@ func (this *UpLoadController) AuthUpLoadHandle() {
url := this.HandleUrl(apiSelect, f, h)
//如果有返回值
if strings.HasPrefix(url, "http") {
this.succResp(200, "上传成功", url, h.Filename)
this.succResp(200, url, h.Filename)
return
}
logs.Notice(h.Filename + "上传" + apiSelect + "失败")
this.errorResp(e.ERROR_CAN_NOT_GET_IMG_URL)
return
}
//返回失败 json
this.errorResp(500, "上传失败")
this.errorResp(e.ERROR_FILE_TYPE)
return
}
//错误resp
func (this *UpLoadController) errorResp(code int, msg string) {
func (this *UpLoadController) errorResp(code int) {
result := &auxpi.ErrorJson{}
result.Code = code
result.Msg = msg
result.Msg = e.GetMsg(code)
this.Data["json"] = result
this.ServeJSON()
}
//成功 resp
func (this *UpLoadController) succResp(code int, msg string, url string, name string) {
func (this *UpLoadController) succResp(code int, url string, name string) {
result := &auxpi.ResultJson{}
result.Code = code
result.Msg = msg
result.Msg = e.GetMsg(code)
result.Data.Url = url
result.Data.Name = name
//beego.Alert(result)
this.Data["json"] = result
this.ServeJSON()
}

@ -1,16 +1,13 @@
package utils
import (
"auxpi/auxpiAll"
"auxpi/bootstrap"
"auxpi/server"
"github.com/astaxie/beego"
"mime/multipart"
"strings"
)
type UpLoadTools struct {
beego.Controller
server.Smms
server.SouGou
server.Sina
@ -72,22 +69,3 @@ func (this *UpLoadTools) Validate(contentType string, fileName string) bool {
return false
}
//错误resp
func (this *UpLoadTools) ErrorResp(code int, msg string) {
result := &auxpi.ErrorJson{}
result.Code = code
result.Msg = msg
this.Data["json"] = result
this.ServeJSON()
}
func (this *UpLoadTools) SuccResp(code int, msg string, url string, name string) {
result := &auxpi.ResultJson{}
result.Code = code
result.Msg = msg
result.Data.Url = url
result.Data.Name = name
//beego.Alert(result)
this.Data["json"] = result
this.ServeJSON()
}

@ -6,8 +6,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<meta name="renderer" content="webkit">
<meta http-equiv="Cache-Control" content="no-siteapp"/>
<meta name="keywords" content="{{.siteName}}"/>
<meta name="description" content="{{.siteName}} sina Pictures & SouGou Pirtures & pictures upload"/>
<meta name="keywords" content="{{.siteName}} ,新浪图床,搜狗图床,API图床,图片上传"/>
<meta name="description" content="{{.siteName}} 新浪图床,搜狗图床,图片上传,API 图床"/>
<title>{{ .siteName}}</title>
<link href="/static/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

@ -37,6 +37,7 @@
}).on("fileuploaded", function (event, data, previewId, index) {
var form = data.form, files = data.files, extra = data.extra, response = data.response, reader = data.reader;
if (200 === response.code) {
app.msg(true,response.data.name+"上传完成");
$("#code-url ul").prepend("<li>" + response.data.url + "<i class=\"copy iconfont icon-copy\"></i></li>");
$("#code-html ul").prepend("<li>&lt;img src=\"" + response.data.url + "\" alt=\"" + response.data.name + "\" title=\"" + response.data.name + "\" /&gt;<i class=\"copy iconfont icon-copy\"></i></li>");
$("#code-bbcode ul").prepend("<li>[img]" + response.data.url + "[/img]<i class=\"copy iconfont icon-copy\"></i></li>");

Loading…
Cancel
Save