Gin框架之文件上傳


一、單文件上傳

前端代碼

 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM