一、單文件上傳
前端代碼
1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <title>上傳文件示例</title> 5 </head> 6 <body> 7 <form action="/uploadfiles" method="post" enctype="multipart/form-data"> 8 <input type="file" name="f1"> 9 <input type="submit" value="上傳"> 10 </form> 11 </body> 12 </html>
后端代碼
1 func main() { 2 //創建默認的引擎 3 r := gin.Default() 4 //告訴gin框架去哪加載講台文件 此處可以使用正則表達式 5 r.LoadHTMLGlob("views/index.html") 6 //get請求返回顯示頁面 index.html 7 r.GET("/index", func(c *gin.Context) { 8 c.HTML(http.StatusOK, "index.html", nil) 9 }) 10 //創建請求 當訪問地址為/uploadfile時執行后面的函數 11 r.POST("/uploadfile", func(c *gin.Context) { 12 //獲取表單數據 參數為name值 13 f, err := c.FormFile("f1") 14 //錯誤處理 15 if err != nil { 16 c.JSON(http.StatusBadRequest, gin.H{ 17 "error": err, 18 }) 19 return 20 } else { 21 //將文件保存至本項目根目錄中 22 c.SaveUploadedFile(f, f.Filename) 23 //保存成功返回正確的Json數據 24 c.JSON(http.StatusOK, gin.H{ 25 "message": "OK", 26 }) 27 } 28 29 }) 30 //運行 默認為80端口 31 r.Run() 32 }
二、多文件上傳
前端代碼
1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <title>上傳文件示例</title> 5 </head> 6 <body> 7 <form action="/uploadfiles" method="post" enctype="multipart/form-data"> 8 <input type="file" name="f1s"> 9 <input type="file" name="f1s"> 10 <input type="submit" value="上傳"> 11 </form> 12 </body> 13 </html>
后端代碼
1 //多文件上傳 2 r:=gin.Default() 3 r.LoadHTMLGlob("views/index.html") 4 r.MaxMultipartMemory = 8 << 20 // 8 MiB 設置最大的上傳文件的大小 5 r.GET("/index", func(c *gin.Context) { 6 c.HTML(http.StatusOK,"index.html",nil) 7 }) 8 r.POST("/uploadfiles", func(c *gin.Context) { 9 form,err:=c.MultipartForm() 10 files:=form.File["f1s"] 11 //錯誤處理 12 if err != nil { 13 c.JSON(http.StatusBadRequest, gin.H{ 14 "error": err, 15 }) 16 return 17 } 18 for _,f:=range files{ 19 fmt.Println(f.Filename) 20 c.SaveUploadedFile(f,f.Filename) 21 } 22 c.JSON(http.StatusOK, gin.H{ 23 "message": "OK", 24 }) 25 }) 26 r.Run()
運行:go run main.go
訪問地址:http://127.0.0.1:8080/index