網頁

2021/7/8

Golang Gin 上傳單一檔案 upload single file

Gin應用程式上傳單一檔案的方式如下。


範例環境:

  • Go 1.16
  • Gin 1.7.2

例如下面是提交檔案的表單網頁demo.html,提交位址為http://localhost:8080/upload

demo.html

<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <form action="http://localhost:8080/upload" 
            method="POST" 
            enctype="multipart/form-data">
        upload file:<input name="file" type="file"><br>
        <input type="submit">
    </form>
</body>
</html>

Gin在設定API路徑時使用gin.ContextFormFile(name string)取得表單上傳檔案。

例如下面的APIPOST | /upload接收表單上傳檔案,上傳檔案欄位名稱為file,然後將檔案存在所在目錄下的tmp資料夾(若資料夾不存在不會自動建立及存檔)。

main.go

package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

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

    router.POST("/upload", func(c *gin.Context) {
        file, _ := c.FormFile("file") // get file from form input name 'file'

        c.SaveUploadedFile(file, "tmp/"+file.Filename) // save file to tmp folder in current directory

        c.String(http.StatusOK, "file: %s", file.Filename)
    })

    router.Run()
}


沒有留言:

張貼留言