1. 程式人生 > >golangWeb框架---github.com/gin-gonic/gin學習二(檔案上傳、多檔案上傳)

golangWeb框架---github.com/gin-gonic/gin學習二(檔案上傳、多檔案上傳)

關於如何實現Gin框架上傳單個檔案、多個檔案的案例

上傳單個檔案(一)

package main

import (
	"github.com/gin-gonic/gin"
	"io"
	"log"
	"net/http"
	"os"
)


func main() {
	router := gin.Default()

	router.POST("/upload", getting)
	router.Run()
}

func getting(c *gin.Context){
	file, handler, err := c.Request.FormFile("file")
	filename := handler.Filename
	log.Println("Received file:", handler.Filename)
	out, err := os.Create(filename)
	if err != nil {
		log.Fatal(err)
	}
	defer out.Close()
	_, err = io.Copy(out, file)
	if err != nil {
		log.Fatal(err)
	}
	c.String(http.StatusOK, "Uploaded...")
}

我們通過

$ curl -X POST http://localhost:8080/upload -F “[email protected]/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -H “Content-Type: multipart/form-data”

如下命令就可以實現檔案的上傳(圖片目錄是我本機上的一張圖片)

效果圖如下: 在這裡插入圖片描述

上傳單個檔案(二)

我們還可以利用如下的方法

package main

import (
	"github.com/gin-gonic/gin"
	"log"
	"net/http"
)



func main() {
	router := gin.Default()

	router.POST("/upload", getting)
	router.Run()
}


func getting(c *gin.Context){
	file, _ := c.FormFile("file")
	log.Println(file.Filename)
	//這裡省略了其他操作
	c.String(http.StatusOK, "Uploaded...")
}

同樣執行上述的CURL命令,後臺即可成功收到成功日誌輸出,但是程式碼裡面我只是列出了檔名字,對應檔案的輸出操作就暫時省去了,後續專門開一篇來介紹檔案操作的方方面面 在這裡插入圖片描述

上傳多個檔案

我們還可以實現批量檔案上傳

package main

import (
	"github.com/gin-gonic/gin"
	"log"
	"net/http"
)



func main() {
	router := gin.Default()

	router.POST("/upload", getting)
	router.Run()
}

func getting(c *gin.Context){

	form, _ := c.MultipartForm()
	files := form.File["upload[]"]

	for _, file := range files {
		log.Println(file.Filename)
	}
	c.String(http.StatusOK, "Uploaded...")


}


然後我們執行如下操作 curl -X POST http://localhost:8080/upload -F “upload[][email protected]/Users/zhiliao/Desktop/23sdfsdfs_wew.png” -F “upload[][email protected]/Users/zhiliao/Desktop/WX20180903-103357.png” -H “Content-Type: multipart/form-data”

就可以看到log日誌輸出 在這裡插入圖片描述