gin框架文件上傳

字號+ 編輯: Snake 修訂: SyncLWT 來源: 原创 2023-09-11 我要說兩句(1)

上傳文件也是發請求,也是借助HTTP請求,只不過是客戶耑上傳到服務耑,下載也是一樣。

文件上传

上传文件也是发请求,也是借助HTTP请求,只不过是客户端上传到服务端,下载也是一样。

单个文件上传

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

// 可以通过下面的方式修改

router.POST("/upload",func(c *gin.Context){

file, err := c.FormFile("file")
If err != nil {
c.JSON(http.StatusInternalServerError, gin.H{
"message":err.Error(),
})
return
}
log.Println(file.Filename)
dst := fmt.Sprintf("C:/tmp/%s", file.Filename)

c.SaveUploadedFile(file,dst)
c.JSON(http.StatusOK, gin.H{
"message":fmt.Sprintf("'%s'uploaded!",file.Filename)
})
})
router.Run()
}

多个文件上传

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

// 可以通过下面的方式修改

router.POST("/upload", func(c *gin.Context){

form, _ := c.MultipartForm()
files := form.File["file"]
 
for index, file := range files{
log.Println(file.Filename)
dst := fmt.Sprintf("C:/tmp/%s_%d", file.Filename, index)

c.SaveUploadedFile(file,dst)
}
c.JSON(http.StatusOK, gin.H{
"message": fmt.Sprintf("'%d'uploaded!", len(files))
})
})
router.Run()
}

例子:单个文件

// main.go

package main
 
import (
"github.com/gin-gonic/gin"
"net/http"
"fmt"
"path"
)
 
func main(){
r := gin.Default()
r.LoadHTMLFiles("./index.html")
r.GET("/index", func(c *gin.Context){
c.HTML(http.StatusOK, "index.html", nil)
})
r.POST("/upload", func(c *gin.Context){

f, err := c.FormFile("f1") // 从请求中获取携带的参数
if err != nil {
C.JSON(http.StatusBadRequest, gin.H{
"error": err.Error(),
})
} else {

// dst := fmt.Sprintf("./%s", f.Filename)
dst := path.Join("./", f.Filename)
c.SaveUploadedFile(f, dst)
c.JSON(http.StatusOK, gin.H{
"status":"OK",
})
}
})
r.Run(":8080")
}

// index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="f1">
<input type="submit" value="上传">
</form>
</body>
</html>
閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    1

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM時間戳跟蹤及CURD(增刪改查)

我要說說
網上賓友點評
1 樓 IP 114.254.***.129 的嘉賓 说道 : 很久前
beego不行了?