diff --git a/conf/app.conf b/conf/app.conf index 8a401e5..704052b 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -8,4 +8,4 @@ sessiongcmaxlifetime = 36000 EnableGzip = true EnableDocs = true -host = aiprose.com \ No newline at end of file +host = aiprose.com diff --git a/controllers/FileController.go b/controllers/FileController.go new file mode 100644 index 0000000..a24c182 --- /dev/null +++ b/controllers/FileController.go @@ -0,0 +1,65 @@ +package controllers + +import ( + "github.com/astaxie/beego" + "path" + "time" + "os" + "fmt" + "crypto/md5" + "math/rand" + "beeblog/models" +) + +type FileController struct { + beego.Controller +} + +func (this *FileController) Upload() { + filename := "" + for filename, _ = range this.Ctx.Request.MultipartForm.File {} + f, h, filerr := this.GetFile(filename) //获取上传的文件 + if filerr != nil { + fmt.Println("err:", filerr) + this.Data["json"] = models.ReurnError(500, "后缀名不符合上传要求") + this.ServeJSON() + return + } + ext := path.Ext(h.Filename) + //验证后缀名是否符合要求 + var AllowExtMap map[string]bool = map[string]bool{ + ".jpg": true, + ".jpeg": true, + ".png": true, + } + if _, ok := AllowExtMap[ext]; !ok { + this.Data["json"] = models.ReurnError(500, "后缀名不符合上传要求") + this.ServeJSON() + return + } + //创建目录 + uploadDir := "static/upload/" + time.Now().Format("2006/01/02/") + err := os.MkdirAll(uploadDir, 777) + if err != nil { + this.Data["json"] = models.ReurnError(500, "") + this.ServeJSON() + return + } + //构造文件名称 + rand.Seed(time.Now().UnixNano()) + randNum := fmt.Sprintf("%d", rand.Intn(9999)+1000) + hashName := md5.Sum([]byte( time.Now().Format("2006_01_02_15_04_05_") + randNum )) + fileName := fmt.Sprintf("%x", hashName) + ext + fpath := uploadDir + fileName + defer f.Close() //关闭上传的文件,不然的话会出现临时文件不能清除的情况 + err = this.SaveToFile(filename, fpath) + if err != nil { + fmt.Println(err) + this.Data["json"] = models.ReurnError(500, "") + this.ServeJSON() + return + } + this.Data["json"] = models.ReurnData("",fpath) + this.ServeJSON() + return +} diff --git a/routers/router.go b/routers/router.go index f1f736d..8229895 100644 --- a/routers/router.go +++ b/routers/router.go @@ -8,5 +8,6 @@ import ( func init() { beego.Router("/", &controllers.IndexController{}) beego.Router("/map", &controllers.MapController{}) + beego.Router("/file/upload", &controllers.FileController{}, "post:Upload") beego.Include(&controllers.PageController{}) } diff --git a/views/note.html b/views/note.html index be66fab..96458b2 100644 --- a/views/note.html +++ b/views/note.html @@ -70,9 +70,9 @@ {{end}} {{/*{{if len .NoteColls 0}}*/}} - {{/*
*/}} + {{/* */}} {{/*{{end}}*/}} @@ -84,8 +84,15 @@ var E = window.wangEditor var editor = new E('#editor') var note = null - editor.customConfig.uploadImgServer = '/upload' + editor.customConfig.uploadImgServer = '/file/upload' // 或者 var editor = new E( document.getElementById('editor') ) + editor.customConfig.uploadImgHooks = { + customInsert: function (insertImg, result, editor) { + var url = result.Data.replace("static/upload", "https://airose.com/itstack"); + insertImg(url); + debugger + } + } editor.create() editor.txt.html("点击右上角菜单新建或者选择笔记
");