之前一直用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("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json")), true);
//将php中的正则移植到go中,需要将/ \/\*[\s\S]+?\*\/ /去掉前后的/,然后将\改成2个\\
//参考//去除所有尖括号内的HTML代码,并换成换行符
// re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")
// src = re.ReplaceAllString(src, "\n")
//当把<和>换成/*和*\时,斜杠/和*之间加双斜杠\\才行。
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
这里有一个, 支持图片和附件上传以及管理