Gin框架 静态文件&上传文件

一、静态文件

在工程目录下创建Assets文件夹,放入一些图片,如下

root@ubuntu:/SuperxonWebSite# tree
.
├── assets
│   ├── golang.jpeg
│   ├── favicon.ico
│   └── img
│       └── web后端.png
└── mian.go

静态文件是指服务器上的静态资源,如音频、图片、文本、脚本等等,为了让静态文件可以被用户直接访问,Gin框架有三种函数实现:

package main

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

func main() {
   r := gin.Default()
   
   // ①
   r.Static("/assets", "./assets") 
   // ②
   //r.StaticFS("/assets", http.Dir("assets")) 
   // ③
   r.StaticFile("/favicon.ico", "./assets/favicon.ico")
   
   r.Run(":8080")
}
①.访问http://localhost:8080/assets/golang.jpeg,就能访问到golang.jpeg;它能够用来访问assets文件下的所有文件;
②.同①的功能类似,但是有个特别的功能就是访问http://localhost:8080/assets/img/时,能够直接展示出img下的所有文件;
③.访问http://localhost:8080/favicon.ico,能直接访问到相应文件,

二、上传文件

上传单个文件

package main

import (
   "fmt"
   "github.com/gin-gonic/gin"
   "net/http"
)

func main() {
   r := gin.Default()
   r.POST("/upload_one", func(c *gin.Context) {
      file, err := c.FormFile("test_file")
      if err != nil {
         c.JSON(http.StatusInternalServerError, gin.H{
            "message": err.Error(),
         })
         return
      }

      fmt.Println(file.Filename)
      // 上传文件到指定的目录
      _ = c.SaveUploadedFile(file, "./assets/"+file.Filename)
      c.JSON(http.StatusOK, gin.H{
         "message": fmt.Sprintf("'%s' upload success.", file.Filename),
      })
   })
   _ = r.Run(":8080")
}
上传文件做测试可以通过postman进行,成功之后可以看到assets文件夹下多了上传的文件

上传单个文件.png

上传多个文件

和单个文件类似,用MultipartForm提前做个处理,postman中选择多个文件
func main() {
   r := gin.Default()
   r.POST("/upload_files", func(c *gin.Context) {
      // 单个文件
      form, _ := c.MultipartForm()
      files := form.File["test_files"]

      for _, file := range files {
         // 上传文件到指定的目录
         _ = c.SaveUploadedFile(file, "./assets/"+ file.Filename)
      }

      c.JSON(http.StatusOK, gin.H{
         "message": fmt.Sprintf("files upload success."),
      })
   })
   _ = r.Run(":8080")
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值