zoukankan      html  css  js  c++  java
  • UEditor的Go图片后端

    之前一直用nginx rewrite到fpm去实现图片上传,但是总得配置一大堆参数。

    如果用Go库就方便多了。

    或者有没有人愿意一起实现一个。

    共 6 个回复


    jimmykuu 2014-08-07 21:29

    我弄过一个基于revel的,不过改成go的很容易,正有意弄一个出来,近期我会弄一个出来。

    # 0

    jimmykuu 2014-08-08 10:26

    https://github.com/jimmykuu/Go-UEditor 先弄了一个图片上传功能了,后续功能继续完善。

    # 1

    kzzhr 2014-08-20 02:52

    @jimmykuu 多谢站长咯。

    不过貌似必须得手动建立upload文件夹
    我pull了一个mkdirAll过去

    # 2

    jimmykuu 2014-08-20 09:11

    是的,后面会继续完善,包括各种配置,欢迎PR

    # 3

    qingo 2016-02-03 13:33

    最近在站长的基础上完善了基本功能。https://github.com/3xxx/UEditor-golang
    满足不同页面将图片等附件上传至不同新建文件夹中。
    只是用的是beego框架。
    相比较md,ue可以批量上传,不过批量上传用的是webupload,虽然都是百度的,但webupload相对于UE而言,感觉好使用很多,包括文档以及api中的事件等。
    controllers中基本代码如下:——新手,不对的地方请指正。

    func (c *UeditorController) ControllerUE() {
        op := c.Input().Get("action")
        // key := c.Input().Get("key") //这里进行判断各个页面,如果是addtopic,如果是addcategory
        switch op {
        case "config": //这里是conf/config.json
            file, err := os.Open("conf/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("\/\*[\S\s]+?\*\/") //参考php的$CONFIG = json_decode(preg_replace("//*[sS]+?*//", "", file_get_contents("config.json")), true);
            //将php中的正则移植到go中,需要将/ /*[sS]+?*/  /去掉前后的/,然后将改成2个\
            //参考//去除所有尖括号内的HTML代码,并换成换行符
            // re, _ = regexp.Compile("\<[\S\s]+?\>")
            // src = re.ReplaceAllString(src, "
    ")
            //当把<和>换成/*和*时,斜杠/和*之间加双斜杠\才行。
            src = re.ReplaceAllString(src, "")
            tt := []byte(src)
            var r interface{}
            json.Unmarshal(tt, &r) //这个byte要解码
            c.Data["json"] = r
            c.ServeJson()
    
        case "uploadimage", "uploadfile", "uploadvideo":
            number := c.Input().Get("number")
            name := c.Input().Get("name")
            err := os.MkdirAll(".\attachment\"+number+name, 0777)
            if err != nil {
                beego.Error(err)
            }
            //保存上传的图片
            //获取上传的文件,直接可以获取表单名称对应的文件名,不用另外提取
            _, h, err := c.GetFile("upfile")
            if err != nil {
                beego.Error(err)
            }
            path1 := ".\attachment\" + number + name + "\" + h.Filename
            err = c.SaveToFile("upfile", path1)
            if err != nil {
                beego.Error(err)
            }
            c.Data["json"] = map[string]interface{}{"state": "SUCCESS", "url": "/attachment/" + number + name + "/" + h.Filename, "title": h.Filename, "original": h.Filename}
            c.ServeJson()
    
        case "uploadscrawl":
            number := c.Input().Get("number")
    
            name := c.Input().Get("name")
            err := os.MkdirAll(".\attachment\"+number+name, 0777)
            if err != nil {
                beego.Error(err)
            }
            path1 := ".\attachment\" + number + name + "\"
            //保存上传的图片
            //upfile为base64格式文件,转成图片保存
            ww := c.Input().Get("upfile")
            ddd, _ := base64.StdEncoding.DecodeString(ww)           //成图片文件并把文件写入到buffer
            newname := strconv.FormatInt(time.Now().Unix(), 10)     // + "_" + filename
            err = ioutil.WriteFile(path1+newname+".jpg", ddd, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件)
            if err != nil {
                beego.Error(err)
            }
            c.Data["json"] = map[string]interface{}{
                "state":    "SUCCESS",
                "url":      "/attachment/" + number + name + "/" + newname + ".jpg",
                "title":    newname + ".jpg",
                "original": newname + ".jpg",
            }
            c.ServeJson()
        case "listimage":
            list := []List{
                {"/static/upload/1.jpg"},
                {"/static/upload/2.jpg"},
            }
            listimage := Listimage{"SUCCESS", list, 1, 21}
            c.Data["json"] = listimage
            c.ServeJson()
    
        case "catchimage":
            list := []ListCatch{
                {"/static/upload/1.jpg", "https://pic2.zhimg.com/7c4a389acaa008a6d1fe5a0083c86975_b.png", "SUCCESS"},
                {"/static/upload/2.jpg", "https://pic2.zhimg.com/7c4a389acaa008a6d1fe5a0083c86975_b.png", "SUCCESS"},
            }
            catchimage := Catchimage{"SUCCESS", list}
            c.Data["json"] = catchimage
            c.ServeJson()
    
            file, header, err := c.GetFile("source") // r.FormFile("upfile")
            beego.Info(header.Filename)
            if err != nil {
                panic(err)
            }
            defer file.Close()
            filename := strings.Replace(uuid.NewUUID().String(), "-", "", -1) + path.Ext(header.Filename)
            err = os.MkdirAll(path.Join("static", "upload"), 0775)
            if err != nil {
                panic(err)
            }
            outFile, err := os.Create(path.Join("static", "upload", filename))
            if err != nil {
                panic(err)
            }
            defer outFile.Close()
            io.Copy(outFile, file)
            // 需要支持callback参数,返回jsonp格式
            // list项的state属性和最外面的state格式一致
            // {
            //     "state": "SUCCESS",
            //     "list": [{
            //         "url": "upload/1.jpg",
            //         "source": "http://b.com/2.jpg",
            //         "state": "SUCCESS"
            //     }, {
            //         "url": "upload/2.jpg",
            //         "source": "http://b.com/2.jpg",
            //         "state": "SUCCESS"
            //     }, ]
            // }
        }
    }
    
    # 4

    aspwebchh 2018-04-30 19:53

    https://github.com/aspwebchh/ueditor-for-go

    这里有一个, 支持图片和附件上传以及管理

  • 相关阅读:
    MatOfPoint作为minAreaRect的参数总是报错"throw new IllegalArgumentException("Incomatible Mat");
    !! Android developer 最新国内镜像
    下载安装和OpenCV匹配的Android开发环境
    Android View的onTouchEvent和OnTouch区别
    org.opencv.android.JavaCameraView 摄像机方向的问题
    C语言 · 数字三角形
    C语言 · Torry的困惑(基本型)
    C语言 · 高精度加法
    C语言 · Anagrams问题
    C语言 · 字符串对比
  • 原文地址:https://www.cnblogs.com/ExMan/p/13158581.html
Copyright © 2011-2022 走看看