/home/wj/gocode/src/gin/main.go
package main import ( "net/http" "strings" "github.com/gin-gonic/gin" "fmt" ) func main() { // 创建路由 r := gin.Default() // 网站主页,绑定路由规则,执行的函数 // gin.Context,封装了request和response r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "hello World!") }) // GET请求,usl是参数一部分 // 127.0.0.1:8001/user/wangjing/adduser r.GET("/user/:name/*action", func(c *gin.Context) { name := c.Param("name") action := c.Param("action") //截取/ action = strings.Trim(action, "/") c.String(http.StatusOK, name+" is "+action) }) // GET请求参数使用?获取,设置默认参数值 // 127.0.0.1:8001/user2?name=wangjing r.GET("/user2", func(c *gin.Context){ name := c.DefaultQuery("name", "默认名字") c.String(http.StatusOK, fmt.Sprintf("hello %s", name)) }) // POST提交表单 r.POST("/form", func(c *gin.Context){ types := c.DefaultPostForm("type", "post") username := c.PostForm("username") password := c.PostForm("userpassword") c.String(http.StatusOK, fmt.Sprintf("username:%s, password:%s,type:%s",username,password,types)) }) // POST上传一个.txt文件:web页面 // 127.0.0.1:8001/index r.LoadHTMLGlob("views/index.html") r.GET("/index", func(c *gin.Context) { c.HTML(http.StatusOK, "index.html", nil) }) // POST上传一个.txt文件:服务端处理逻辑 r.POST("/upload", func(c *gin.Context) { f, err := c.FormFile("f1") if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": err, }) return } else { c.SaveUploadedFile(f, "./wenjian/"+f.Filename) c.JSON(http.StatusOK, gin.H{ "message": "OK", }) } }) // POST上传一个.txt文件:web页面 // 127.0.0.1:8001/index2 r.LoadHTMLGlob("views/index2.html") r.GET("/index2", func(c *gin.Context) { c.HTML(http.StatusOK, "index2.html", nil) }) // POST多文件上传 // 127.0.0.1/uploadMore // 限制表单上传大小 8MB,默认为32MB r.MaxMultipartMemory = 8 << 20 r.POST("/uploadMore", func(c *gin.Context) { form, err := c.MultipartForm() if err != nil { c.String(http.StatusBadRequest, fmt.Sprintf("get err %s", err.Error())) } // 获取所有图片 files := form.File["files"] // 遍历所有图片 for _, file := range files { // 逐个存 if err := c.SaveUploadedFile(file, "./wenjian/"+file.Filename); err != nil { c.String(http.StatusBadRequest, fmt.Sprintf("upload err %s", err.Error())) return } } c.String(200, fmt.Sprintf("upload ok %d files", len(files))) }) r.Run(":8001") }
# 单文件上传web页面,127.0.0.1/index
/home/wj/gocode/src/gin/views/index.go
<html> <head></head> <body> <form method="post" action="/upload" enctype="multipart/form-data"> file:<input type="file" name="f1"> <input type="submit" value="Commit"> </form> </body>
# 多文件上传web页面,127.0.0.1/index2
/home/wj/gocode/src/gin/views/index2.go
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form action="/uploadMore" method="post" enctype="multipart/form-data"> 上传文件:<input type="file" name="files" multiple> <input type="submit" value="提交"> </form> </body> </html>
(完)