共计 1365 个字符,预计需要花费 4 分钟才能阅读完成。
一、引入 gin 框架
import "ginhub.com/gin-gonic/gin
二、渲染页面
router := gin.Default() | |
router.LoadHTMLGlob("view/*") | |
router.GET("/upload",func(c *gin.Context) {c.HTML(http.StatusOK,"upload.tmpl",gin.H{}) | |
}) |
三、解决上传文件
router.POST("/upload", func(c *gin.Context) { | |
// Source | |
file, err := c.FormFile("file") | |
if err != nil {c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error())) | |
return | |
} | |
basePath := "./upload/" | |
filename := basePath + filepath.Base(file.Filename) | |
if err := c.SaveUploadedFile(file, filename); err != nil {c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error())) | |
return | |
} | |
c.String(http.StatusOK,fmt.Sprintf("文件 %s 上传胜利", file.Filename)) | |
}) |
全副代码:
package main | |
import ( | |
"github.com/gin-gonic/gin" | |
"net/http" | |
"fmt" | |
"path/filepath" | |
) | |
func main() {router := gin.Default() | |
router.LoadHTMLGlob("view/*") | |
router.GET("/upload",func(c *gin.Context) {c.HTML(http.StatusOK,"upload.tmpl",gin.H{}) | |
}) | |
router.MaxMultipartMemory = 8 << 20 // 8 MiB | |
router.POST("/upload", func(c *gin.Context) {file, err := c.FormFile("file") | |
if err != nil {c.String(http.StatusBadRequest, fmt.Sprintf("get form err: %s", err.Error())) | |
return | |
} | |
basePath := "./upload/" | |
filename := basePath + filepath.Base(file.Filename) | |
if err := c.SaveUploadedFile(file, filename); err != nil {c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error())) | |
return | |
} | |
c.String(http.StatusOK,fmt.Sprintf("文件 %s 上传胜利", file.Filename)) | |
}) | |
router.Run(":8080") | |
} |
文档链接:https://github.com/gin-gonic/…
正文完