golangWeb框架---github.com/gin-gonic/gin學習二(檔案上傳、多檔案上傳)
阿新 • • 發佈:2018-12-10
關於如何實現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日誌輸出