Skip to content

Commit

Permalink
测试了go cli包
Browse files Browse the repository at this point in the history
  • Loading branch information
peifengll committed Jan 26, 2024
1 parent d87cc96 commit 34e0a0a
Show file tree
Hide file tree
Showing 297 changed files with 129,741 additions and 13 deletions.
9 changes: 9 additions & 0 deletions UEditor/controller/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"imageUrl": "http://192.168.0.194:8080/ueditor/go/controller?action=uploadimage",
"imageActionName": "uploadimage",
"imageUrlPrefix": "http://192.168.0.194:8080",
"imagePath": "/static/upload",
"imageFieldName": "upfile",
"imageMaxSize": 2048,
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"]
}
220 changes: 220 additions & 0 deletions UEditor/controller/serviceUeditor.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
package controllers

import (
"encoding/base64"
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"net/http"
"os"
"regexp"
"time"

"github.com/gin-gonic/gin"
)

const ueBasePath = `static/upload/`

func ShowDemo(c *gin.Context) {
c.HTML(
// Set the HTTP status to 200 (OK)
http.StatusOK,
// Use the demo.html template
"demo.html",
// Pass the data that the page uses (in this case, 'title')
gin.H{
"title": "UEditor演示",
},
)
}

func Action(c *gin.Context) {
action := c.Query("action")
datePath := time.Now().Format("20060102") + `/`
fmt.Println(action)
switch action {
//自动读入配置文件,只要初始化UEditor即会发生
case "config":
jsonByte, _ := ioutil.ReadFile("D:\\code\\go\\trys\\tests\\UEditor\\controller\\config.json")
fmt.Println(jsonByte)
re, _ := regexp.Compile("\\/\\*[\\S\\s]+?\\*\\/")
jsonByte = re.ReplaceAll(jsonByte, []byte(""))
c.Writer.Write(jsonByte)

case "uploadimage":
{
//创建保存文件的目录,每天一个目录
err := os.MkdirAll(ueBasePath+`images/`+datePath, 0777)
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("创建目录错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}
//保存上传的图片
//获取上传的文件,直接可以获取表单名称对应的文件名,不用另外提取
file, header, err := c.Request.FormFile("upfile")
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("获取文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}

name := time.Now().Format("150405") + header.Filename
out, err := os.Create(ueBasePath + `images/` + datePath + name)
if err != nil {
log.Fatal(err)
}
defer out.Close()
_, err = io.Copy(out, file)
if err != nil {
log.Fatal(err)
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("上传文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}

data, err := json.Marshal(map[string]string{
"url": fmt.Sprintf("%s", ueBasePath+`images/`+datePath+name), //保存后的文件路径
"title": "", //文件描述,对图片来说在前端会添加到title属性上
"original": header.Filename, //原始文件名
"state": "SUCCESS", //上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
})
if err != nil {
panic(err)
}
c.Writer.Write(data)
}

case "uploadvideo":
{
err := os.MkdirAll(ueBasePath+`video/`+datePath, 0777)
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("创建目录错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}
//保存上传的视频
//获取上传的文件,直接可以获取表单名称对应的文件名,不用另外提取
file, err := c.FormFile("upfile")
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("获取文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}

name := time.Now().Format("150405") + file.Filename
path := ueBasePath + `video/` + datePath
if err := c.SaveUploadedFile(file, path+name); err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("上传文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}
data, _ := json.Marshal(map[string]string{
"url": fmt.Sprintf("%s", ueBasePath+`images/`+datePath+name), //保存后的文件路径
"title": "", //文件描述,对图片来说在前端会添加到title属性上
"original": file.Filename, //原始文件名
"state": "SUCCESS", //上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
})
c.Writer.Write(data)
}

case "uploadfile":
{
//创建保存文件的目录,每天一个目录
err := os.MkdirAll(ueBasePath+`files/`+datePath, 0777)
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("创建目录错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}
//保存上传的文件
//获取上传的文件,直接可以获取表单名称对应的文件名,不用另外提取
file, header, err := c.Request.FormFile("upfile")
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("获取文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}

name := time.Now().Format("150405") + header.Filename
out, err := os.Create(ueBasePath + `files/` + datePath + name)
if err != nil {
log.Fatal(err)
}
defer out.Close()
_, err = io.Copy(out, file)
if err != nil {
log.Fatal(err)
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("上传文件错误: %s", err.Error()),
})
c.Writer.Write(data)
return
}
data, _ := json.Marshal(map[string]string{
"url": fmt.Sprintf("%s", ueBasePath+`images/`+datePath+name), //保存后的文件路径
"title": "", //文件描述,对图片来说在前端会添加到title属性上
"original": header.Filename, //原始文件名
"state": "SUCCESS", //上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
})
c.Writer.Write(data)
}
case "uploadscrawl":
{
path := ueBasePath + `scrawl/` + datePath
name := time.Now().Format("150405.999999") + `.jpg`
err := os.MkdirAll(path, 0777)
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("创建目录错误:%s", err.Error()),
})
c.Writer.Write(data)
return
}
//upfile为base64格式文件,转成图片保存
upfile, _ := c.GetPostForm("upfile")
upBytes, err := base64.StdEncoding.DecodeString(upfile) // + "_" + filename
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("获取图片错误:%s", err.Error()),
})
c.Writer.Write(data)
return
}
err = ioutil.WriteFile(path+name, upBytes, 0666) //buffer输出到jpg文件中(不做处理,直接写到文件)
if err != nil {
data, _ := json.Marshal(map[string]string{
"state": fmt.Sprintf("保存涂鸦文件错误:%s", err.Error()),
})
c.Writer.Write(data)
return
}
data, _ := json.Marshal(map[string]string{
"state": "SUCCESS",
"url": `/` + path + name,
"title": `涂鸦`,
"original": `涂鸦不见了`,
})
c.Writer.Write(data)
return
}
}
}
8 changes: 8 additions & 0 deletions UEditor/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package main

import "github.com/peifengll/tests/UEditor/router"

func main() {
s := router.Server()
s.Run("192.168.0.194:8080")
}
14 changes: 14 additions & 0 deletions UEditor/router/router.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package router

import (
"github.com/gin-gonic/gin"
controllers "github.com/peifengll/tests/UEditor/controller"
)

func Server() *gin.Engine {
server := gin.Default()
server.Static("/static/", "./static")
g := server.Group("/ueditor")
g.Any("/hello", controllers.Action)
return server
}
10 changes: 7 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ require (
github.com/casbin/casbin/v2 v2.77.2
github.com/casbin/gorm-adapter/v3 v3.0.4
github.com/gin-gonic/gin v1.9.1
github.com/go-redis/redis/v8 v8.11.5
github.com/google/martian v2.1.0+incompatible
github.com/google/uuid v1.4.0
github.com/prometheus/client_golang v1.17.0
github.com/spf13/viper v1.17.0
github.com/urfave/cli/v2 v2.27.1
github.com/zeromicro/go-zero v1.6.0
go.uber.org/zap v1.26.0
google.golang.org/grpc v1.59.0
google.golang.org/protobuf v1.31.0
gorm.io/driver/mysql v1.5.2
Expand All @@ -26,6 +28,7 @@ require (
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/fatih/color v1.15.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
Expand All @@ -36,6 +39,7 @@ require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator/v10 v10.14.0 // indirect
github.com/go-redis/redis/v8 v8.11.5 // indirect
github.com/go-sql-driver/mysql v1.7.1 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
Expand Down Expand Up @@ -69,6 +73,7 @@ require (
github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect
github.com/prometheus/common v0.44.0 // indirect
github.com/prometheus/procfs v0.11.1 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/sagikazarmark/locafero v0.3.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
Expand All @@ -82,6 +87,7 @@ require (
github.com/tidwall/pretty v1.2.0 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
go.opentelemetry.io/otel v1.19.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
Expand All @@ -93,10 +99,8 @@ require (
go.opentelemetry.io/otel/sdk v1.19.0 // indirect
go.opentelemetry.io/otel/trace v1.19.0 // indirect
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/automaxprocs v1.5.3 // indirect
go.uber.org/multierr v1.10.0 // indirect
go.uber.org/zap v1.26.0 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/crypto v0.16.0 // indirect
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
Expand Down
Loading

0 comments on commit 34e0a0a

Please sign in to comment.