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:<br>
<input name="files" type="file"><br>
<input name="files" type="file"><br>
<input name="files" type="file"><br>
<input type="submit">
</form>
</body>
</html>
Gin在設定API路徑時使用gin.Context
的MultipartForm()
取得表單Form
,然後以上傳檔案欄位名稱取得其map屬性File
中的FileHeader
slice。
例如下面的APIPOST | /upload
接收表單上傳檔案,多個上傳檔案欄位名稱為files
,然後將檔案存在所在目錄下的tmp
資料夾(若資料夾不存在不會自動建立及存檔)。
main.go
package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.POST("/upload", func(c *gin.Context) {
form, _ := c.MultipartForm()
files := form.File["files"]
for _, file := range files {
log.Println(file.Filename)
c.SaveUploadedFile(file, "tmp/"+file.Filename)
}
c.String(http.StatusOK, "%d files uploaded!", len(files))
})
router.Run()
}
沒有留言:
張貼留言