User RestFul Stype Router ,Rename Files

dev
aimerforreimu 6 years ago
parent ca0cd653d5
commit cacf9bc4aa
  1. 1
      auxpiAll/e/msg.go
  2. 2
      controllers/api/apiUpload.go
  3. 30
      controllers/index.go
  4. 98
      controllers/uploadComm/handle.go
  5. 14
      controllers/webUpload/webUpLoad.go
  6. 16
      routers/api.go
  7. 46
      routers/commentsRouter_______go_src_auxpi_controllers.go
  8. 19
      routers/commentsRouter_______go_src_auxpi_controllers_upload.go
  9. 46
      routers/commentsRouter_controllers.go
  10. 19
      routers/commentsRouter_controllers_upload.go
  11. 15
      routers/router.go
  12. 0
      views/webUpload/ban.tpl
  13. 0
      views/webUpload/box.tpl
  14. 2
      views/webUpload/uploadScript.tpl

@ -18,6 +18,5 @@ func GetMsg(code int) string {
if ok {
return msg
}
return MsgFlags[ERROR]
}

@ -23,7 +23,7 @@ func (this *ApiUpLoadController) Prepare() {
var picType = []string{"png", "jpg", "jpeg", "gif", "bmp"}
var siteConfig = bootstrap.Config()
func (this *ApiUpLoadController) ApiUpLoadHandle() {
func (this *ApiUpLoadController) UpLoadHandle() {
//检测是否开启 token 认证
if siteConfig.ApiToken != "" {
//需要进行验证

@ -12,14 +12,9 @@ type PagesController struct {
//获取 config 的配置
var siteConfig = bootstrap.Config()
func (c *PagesController) URLMapping() {
c.Mapping("Show", c.IndexShow)
c.Mapping("SinaShow", c.SinaShow)
c.Mapping("SmmsShow", c.SmmsShow)
c.Mapping("AboutShow", c.AboutShow)
}
// @router / [get]
func (this *PagesController) IndexShow() {
this.Data["siteName"] = siteConfig.SiteName
this.Data["siteUrl"] = siteConfig.SiteUrl
@ -33,15 +28,15 @@ func (this *PagesController) IndexShow() {
this.Data["iconColor"] = "orange"
this.Data["xsrf_token"] = this.XSRFToken()
this.LayoutSections = make(map[string]string)
this.LayoutSections["Scripts"] = "upload/uploadScript.tpl"
this.LayoutSections["Scripts"] = "webUpload/uploadScript.tpl"
this.LayoutSections["Header"] = "layouts/header.tpl"
this.LayoutSections["Footer"] = "layouts/footer.tpl"
this.LayoutSections["Left"] = "layouts/left.tpl"
this.Layout = "layouts/app.tpl"
this.TplName = "upload/box.tpl"
this.TplName = "webUpload/box.tpl"
}
// @router /Sina [get]
func (this *PagesController) SinaShow() {
this.Data["siteName"] = siteConfig.SiteName
this.Data["siteUrl"] = siteConfig.SiteUrl
@ -55,20 +50,20 @@ func (this *PagesController) SinaShow() {
this.Data["apiSelect"] = "Sina"
this.Data["iconStyle"] = "xinlang"
this.Data["iconColor"] = "red"
this.LayoutSections["Scripts"] = "upload/uploadScript.tpl"
this.LayoutSections["Scripts"] = "webUpload/uploadScript.tpl"
this.LayoutSections["Header"] = "layouts/header.tpl"
this.LayoutSections["Footer"] = "layouts/footer.tpl"
this.LayoutSections["Left"] = "layouts/left.tpl"
this.Layout = "layouts/app.tpl"
//检测是否开启新浪图床
if siteConfig.SiteUploadWay.OpenSinaPicStore {
this.TplName = "upload/box.tpl"
this.TplName = "webUpload/box.tpl"
return
}
this.TplName = "upload/ban.tpl"
this.TplName = "webUpload/ban.tpl"
}
// @router /Smms [get]
func (this *PagesController) SmmsShow() {
this.Data["siteName"] = siteConfig.SiteName
this.Data["siteUrl"] = siteConfig.SiteUrl
@ -82,22 +77,21 @@ func (this *PagesController) SmmsShow() {
this.Data["apiSelect"] = "Smms"
this.Data["iconStyle"] = "sm"
this.Data["iconColor"] = "blue"
this.LayoutSections["Scripts"] = "upload/uploadScript.tpl"
this.LayoutSections["Scripts"] = "webUpload/uploadScript.tpl"
this.LayoutSections["Header"] = "layouts/header.tpl"
this.LayoutSections["Footer"] = "layouts/footer.tpl"
this.LayoutSections["Left"] = "layouts/left.tpl"
this.Layout = "layouts/app.tpl"
this.TplName = "upload/box.tpl"
this.TplName = "webUpload/box.tpl"
}
// @router /about/ [get]
func (this *PagesController) AboutShow() {
this.Data["siteName"] = siteConfig.SiteName
this.Data["siteUrl"] = siteConfig.SiteUrl
this.Data["siteFooterText"] = siteConfig.SiteFooter
this.LayoutSections = make(map[string]string)
this.LayoutSections["Scripts"] = "upload/uploadScript.tpl"
this.LayoutSections["Scripts"] = "webUpload/uploadScript.tpl"
this.LayoutSections["Header"] = "layouts/header.tpl"
this.LayoutSections["Footer"] = "layouts/footer.tpl"
this.LayoutSections["Left"] = "layouts/left.tpl"

@ -1,98 +0,0 @@
package uploadComm
import (
"auxpi/auxpiAll"
"auxpi/server"
"github.com/astaxie/beego"
"log"
"strings"
)
type HandleController struct {
beego.Controller
server.Sina
server.SouGou
}
var picType = []string{"png", "jpg", "jpeg", "gif", "bmp"}
//验证文件后缀&文件MIME
func (this *HandleController) Validate(contentType string, fileName string) bool {
//首先检测文件的后缀
isSuffix := false
for _, pType := range picType {
if strings.HasSuffix(fileName, pType) {
isSuffix = true
break
}
}
//然后检测 MIME 类型
//beego.Alert(contentType)
if strings.HasPrefix(contentType, "image") && isSuffix {
for _, pType := range picType {
if strings.HasSuffix(contentType, pType) {
return true
}
}
}
return false
}
func (this *HandleController) ErrorResponse(code int, msg string) {
result := &auxpi.ErrorJson{}
result.Code = code
result.Msg = msg
this.Data["json"] = result
this.ServeJSON()
}
func (this *HandleController) Check() {
//获取上传类型
apiSelect := this.GetString("apiSelect")
f, h, err := this.GetFile("image")
defer f.Close()
if err != nil {
log.Fatal("File Upload Err", err)
}
imgMime := h.Header.Get("Content-Type")
//验证
validate := this.Validate(imgMime, h.Filename)
if validate {
//读取文件
size := h.Size
fileContent := make([]byte, size)
f.Read(fileContent)
url := ""
switch apiSelect {
case "SouGou":
url = this.UpLoadToSouGou(fileContent)
case "Sina":
url = this.UpLoadToSina(fileContent, imgMime)
default:
url = ""
}
//如果有返回值
if strings.HasPrefix(url, "http") {
//配置 json
result := &auxpi.ResultJson{}
result.Code = 200
result.Msg = "上传成功"
result.Data.Url = url
result.Data.Name = h.Filename
//beego.Alert(result)
this.Data["json"] = result
this.ServeJSON()
return
}
}
//返回失败 json
result := &auxpi.ErrorJson{}
result.Code = 500
result.Msg = "上传失败"
this.Data["json"] = result
this.ServeJSON()
return
}

@ -11,7 +11,7 @@ import (
"strings"
)
type UpLoadController struct {
type WebUpLoadController struct {
beego.Controller
utils.UpLoadTools
}
@ -19,12 +19,8 @@ type UpLoadController struct {
var picType = []string{"png", "jpg", "jpeg", "gif", "bmp"}
var siteConfig = bootstrap.Config()
func (c *UpLoadController) URLMapping() {
c.Mapping("UpLoad", c.AuthUpLoadHandle)
}
// @router /api/v1/auth/upload/ [post]
func (this *UpLoadController) AuthUpLoadHandle() {
//代码冗余,但是使用 API 会造成不必要的消耗
func (this *WebUpLoadController) UpLoadHandle() {
//获取上传类型
apiSelect := this.GetString("apiSelect")
f, h, err := this.GetFile("image")
@ -61,7 +57,7 @@ func (this *UpLoadController) AuthUpLoadHandle() {
}
//错误resp
func (this *UpLoadController) errorResp(code int) {
func (this *WebUpLoadController) errorResp(code int) {
result := &auxpi.ErrorJson{}
result.Code = code
result.Msg = e.GetMsg(code)
@ -70,7 +66,7 @@ func (this *UpLoadController) errorResp(code int) {
}
//成功 resp
func (this *UpLoadController) succResp(code int, url string, name string) {
func (this *WebUpLoadController) succResp(code int, url string, name string) {
result := &auxpi.ResultJson{}
result.Code = code
result.Msg = e.GetMsg(code)

@ -0,0 +1,16 @@
package routers
import (
"auxpi/controllers/api"
"github.com/astaxie/beego"
)
func RegisterOpenApi() {
//不需要控制的 api 放到这里
ns :=
beego.NewNamespace("/api/v1",
beego.NSRouter("/web_upload/", &api.ApiUpLoadController{}, "post:UpLoadHandle"),
)
beego.AddNamespace(ns)
}

@ -1,46 +0,0 @@
package routers
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/context/param"
)
func init() {
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "IndexShow",
Router: `/`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "SinaShow",
Router: `/Sina`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "SmmsShow",
Router: `/Smms`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "AboutShow",
Router: `/about/`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}

@ -1,19 +0,0 @@
package routers
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/context/param"
)
func init() {
beego.GlobalControllerRouter["auxpi/controllers/upload:UpLoadController"] = append(beego.GlobalControllerRouter["auxpi/controllers/upload:UpLoadController"],
beego.ControllerComments{
Method: "AuthUpLoadHandle",
Router: `/api/v1/auth/upload/`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}

@ -1,46 +0,0 @@
package routers
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/context/param"
)
func init() {
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "IndexShow",
Router: `/`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "SinaShow",
Router: `/Sina`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "SmmsShow",
Router: `/Smms`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["auxpi/controllers:PagesController"] = append(beego.GlobalControllerRouter["auxpi/controllers:PagesController"],
beego.ControllerComments{
Method: "AboutShow",
Router: `/about/`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}

@ -1,19 +0,0 @@
package routers
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/context/param"
)
func init() {
beego.GlobalControllerRouter["auxpi/controllers/upload:UpLoadController"] = append(beego.GlobalControllerRouter["auxpi/controllers/upload:UpLoadController"],
beego.ControllerComments{
Method: "AuthUpLoadHandle",
Router: `/api/v1/auth/upload/`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
}

@ -4,19 +4,22 @@ import (
"auxpi/bootstrap"
"auxpi/controllers"
"auxpi/controllers/api"
"auxpi/controllers/upload"
"github.com/astaxie/beego"
)
var siteConfig = bootstrap.Config()
func init() {
//注册控制器内的路由
beego.Include(&controllers.UpLoadController{})
beego.Include(&page.PagesController{})
//API 路由单独控制
//正式环境不使用控制器内环境,调试时使用控制器内反射路由
beego.Router("/",&page.PagesController{},"get:IndexShow")
beego.Router("/Sina",&page.PagesController{},"get:SinaShow")
beego.Router("/Smms",&page.PagesController{},"get:SmmsShow")
beego.Router("/about",&page.PagesController{},"get:AboutShow")
//注册无需控制的 API
RegisterOpenApi()
//部分 API 路由单独控制
if siteConfig.OpenApiUpLoad {
beego.Router("api/v1/upload", &api.ApiUpLoadController{}, "post:ApiUpLoadHandle")
beego.Router("api/v1/upload", &api.ApiUpLoadController{}, "post:UpLoadHandle")
beego.Router("api/v1/upload", &api.ApiUpLoadController{}, "get,put,patch,delete,options,head:ErrorCapture")
} else {
beego.Router("api/v1/upload", &api.ApiUpLoadController{}, "*:ErrorCapture")

@ -19,7 +19,7 @@
});
$("#image").fileinput({
uploadUrl: "{{ .apiUrl}}",
uploadUrl: "{{ urlfor "ApiUpLoadController.UpLoadHandle"}}",
language: "zh",
uploadAsync: true,
overwriteInitial: false,
Loading…
Cancel
Save