やりたいこと
画像をGinのAPIサーバーへアップロードし./images
ディレクトリに保存したい。
実装方法
main.go
package main
import (
"net/http"
"path/filepath"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.MaxMultipartMemory = 8 << 20
router.POST("/images", func(c *gin.Context) {
file, err := c.FormFile("images")
if err != nil {
c.String(http.StatusBadRequest, "get form err: %s", err.Error())
return
}
savepath := filepath.Join("images", file.Filename)
if err := c.SaveUploadedFile(file, savepath); err != nil {
c.String(http.StatusBadRequest, "upload file err: %s", err.Error())
return
}
c.String(http.StatusOK, "File %s uploaded successfully.", file.Filename)
})
router.Run(":8080")
}
アップロード用のディレクトリを作成しておく
今回は./images
に保存します。
path/filepath
を使う
os間の物理ファイルパスのセパレータがUNIX系は/
で、Windows系は\
のように異なるので、その差異を吸収してくれるようによしなに扱ってくれるライブラリ。
動作確認
Postmanで確認
form-data
にアップロードしたい画像ファイルを添付し、POSTする。
keyはfile, err := c.FormFile("image")
の部分で指定したimage
に合わせる。
無事アップロード完了。
サーバーサイドで確認
しっかり指定したディレクトリに画像がアップロードされていることを確認。