这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
这篇笔记记录在抖音后端开发过程中关于静态文件的相关知识点
引言
在后端开发过程中,有个任务是要能够实现用户上传视频文件,将数据文件进行保存,并且之后能够通过URL进行访问数据信息。在开发过程中使用到了Gin框架,因此去查看官方文档是否有相关的解决方法。
官方样例
官方给出示例 静态文件服务
func main() {
router := gin.Default()
router.Static("/assets", "./assets")
router.StaticFS("/more_static", http.Dir("my_file_system"))
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
// 监听并在 0.0.0.0:8080 上启动服务
router.Run(":8080")
}
用法分析
官方给出了简洁的使用方法,但是对于初学者还是比较迷惑不清楚应该怎么做,因此下面将对其进行详细分析。
1.Static方法
router.Static("/assets", "./assets")
通过这个函数能够将HTTP请求中 /assets定位到 当前目录下面的 assets文件夹
在实际使用中,我们是这样用
r.Static("/static", "./public")
将 static 定位到 public文件夹,然后在之下还有 video 和 cover 分别存放保存的视频数据和生成的视频封面数据,在生成视频和封面的链接时将前后路径进行拼接即可得到对应的URL链接,然后就可以通过HTTP协议进行访问数据
playURL:= "http://" + config.C.LocalIp.Ip + ":" + config.C.LocalIp.Port + "/static/video/" + videoName
coverURL:= "http://" + config.C.LocalIp.Ip + ":" + config.C.LocalIp.Port + "/static/cover/" + coverName
2.StaticFS方法
router.StaticFS("/more_static", http.Dir("my_file_system"))
除了将 my_file_system设置为静态文件夹,能够访问对应的数据之外,当目录下不存 index.html 文件时,会列出该目录下的所有文件
3.StaticFile 方法
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
这个函数会将 /resources/favicon.ico设置为静态资源,当用户访问时直接返回对应的数据信息
小结
通过使用Gin框架提供的静态文件访问,成功将保存的视频封面数据信息返回给客户端,从而实现刷视频的功能