单文件上传
前端
<body><form action="http://127.0.0.1:9090/upload" method="post" enctype="multipart/form-data"><input type="file" name="file_name"><input type="submit" value="upload"></form></body>
后端
package mainimport ("log""net/http""path""github.com/gin-gonic/gin")//单文件上传func uploadfile(c *gin.Context) {file, _ := c.FormFile("file_name") //对应的是前端的文件名标签log.Println(file.Filename) //日志打印文件名dst := path.Join("./static", file.Filename) //存储目录static,目录必须是存在的c.SaveUploadedFile(file, dst) //存储c.JSON(http.StatusOK, gin.H{ //返回上传成功提示"message": "upload succeed",})}func main() {router := gin.Default() //定义默认路由router.POST("/upload", uploadfile) //文件上传router.Run(":9090") //绑定0.0.0.0:9090}
多文件上传
前端
后端
和多文件没差多少,就是多了遍历存储。
package mainimport ("log""net/http""path""github.com/gin-gonic/gin")//多文件上传func uploadfiles(c *gin.Context) {form, _ := c.MultipartForm()files := form.File["file_name"] //对应的是前端的文件名标签,注意,这里不是括号了,是中括号,因为这里是mapfor _, f := range files {log.Println(f.Filename) //日志打印文件名dst := path.Join("./static", f.Filename) //存储目录staticc.SaveUploadedFile(f, dst) //存储c.JSON(http.StatusOK, gin.H{ //返回上传成功提示"message": "upload succeed",})}}func main() {router := gin.Default() //定义默认路由router.POST("/upload", uploadfiles) //多文件上传router.Run(":9090") //绑定0.0.0.0:9090}

