加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

UEditor + golang 实现图片上传

发布时间:2020-12-16 18:07:26 所属栏目:大数据 来源:网络整理
导读:UEditor官方只提供了4种语言的Demo,集成golang的资料,网上还比较少,正好我们项目用到了,对前端并不熟悉的我调试了好半天才搞出来,和大家分享一下: 如何把插件跑起来很简单,在此不再赘述,谈几个容易出bug的地方。 遇到问题1.后端配置项没有正常加载,

UEditor官方只提供了4种语言的Demo,集成golang的资料,网上还比较少,正好我们项目用到了,对前端并不熟悉的我调试了好半天才搞出来,和大家分享一下:


如何把插件跑起来很简单,在此不再赘述,谈几个容易出bug的地方。


遇到问题1.后端配置项没有正常加载,上传插件不能正常使用!

修改:ueditor.config.js 33行,serverUrl: URL //+ "php/controller.php" 改为你要请求的路径: 如: serverUrl: URL + "oapi/forum/add"

这样加载插件的时候,应该可以正常访问你的action了,记住action一定要返回值,否则会提示

not import language file

跟踪代码,你会发现是ueditor.all.js 8093行eval("("+r.responseText+")") 这里抛异常了, r.responseTest为空了,eval()遇空会抛此异常

所以action里面要response

func AddActivityUEditor(w http.ResponseWriter,r *http.Request) {
	log.Info("===ParseForm AddActivityUEditor===")
	r.ParseForm()
	op := r.Form.Get("action")
	log.Debug("action --->",op)
	switch op {
	case "config": //这里是conf/config.json
		file,err := os.Open("./ueditor_config.json")
		if err != nil {
			log.Fatal(err)
			os.Exit(1)
		}
		defer file.Close()
		fd,err := ioutil.ReadAll(file)
		src := string(fd)
		re,_ := regexp.Compile("/*[Ss]+?*/") //参考php的$CONFIG = json_decode(preg_replace("//*[sS]+?*//","",file_get_contents("config.json")),true);
		//将php中的正则移植到go中,需要将/ /*[sS]+?*/  /去掉前后的/,然后将改成2个
		//参考//去除所有尖括号内的HTML代码,并换成换行符
		// re,_ = regexp.Compile("<[Ss]+?>")
		// src = re.ReplaceAllString(src,"n")
		//当把<和>换成/*和*时,斜杠/和*之间加双斜杠才行。
		src = re.ReplaceAllString(src,"")
		tt := []byte(src)
		var r interface{}
		json.Unmarshal(tt,&r) //这个byte要解码
		util.Response(w,http.StatusOK,r)







遇到问题2.图片上传成功,但是没有加入到文本

这也是个坑,必须用ueditor指定的返回格式,还必须是json格式的,看代码

case "uploadimage":
		//上传到图片服务器
		var imgs string
		imgfile,handler,err := r.FormFile("upfile")
		if err == nil {	
			imgName,errUpload := ctr.UploadHandler(w,r,"act"+bson.NewObjectId().Hex(),imgfile,handler)
			imgs = imgName
			log.Debug("===imgName ===",imgName)
			if errUpload != nil{
				log.Error("===errUpload ===",errUpload)
				return
			}
		}else{
			log.Info("===err ===",err)
		}

		//将对象赋值,并转换成流文件,再转换成json,再解码
		ue := getUe(imgs)         //组装对象
	
		fd,err := json.Marshal(ue) //json压缩
		if err !=nil{
			log.Error(err)
		}

		src := string(fd)         //转换json流文件
		tt := []byte(src)
		var r interface{}
		json.Unmarshal(tt,&r) 	  //json解压
		log.Debug("AddActivityUEditor response ---> ",r) //打印出json对象
		util.Response(w,r)
	}
}

//ueditor指定返回参数,不按这个要求图片不能写入文本框
type UploadimageUE struct {
	Url      string `json:"url"`
	Title    string `json:"title"`
	Original string `json:"original"`
	State    string `json:"state"`
}

//组装对象
func getUe(imgs string)(result *UploadimageUE){
	var ue UploadimageUE
	ue.Original = imgs
	ue.State = "SUCCESS"
	ue.Title = imgs
	ue.Url = "/weixintest/upload/"+imgs
	return &ue
}

	

这样就能正常上传图片到编辑器了

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读