一、静态文件
在工程目录下创建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](https://i-blog.csdnimg.cn/blog_migrate/b4afc3c573c683b0e8317e0001c144c3.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")
}