Gin 如何配置web 文件服务,而不能访问文件列表

痛点:

r.Static("/static/" , "static")
r.StaticFS("/static/" , http.Dir("./static"))

假设我有100万文件,在目录里,被人访问了几下,就那么几下,发现服务挂了。。。真不知道当时发明 gin 的小天才怎么想的。。。或许是我用的不对。。

解决:

//StaticHandler 设置单文件访问,不能访问目录
func StaticHandler(relativePath string, fs string , r *gin.Engine) {

	r.GET(relativePath + "*filepath" , func(c *gin.Context) {

		file := c.Param("filepath")

		name, err := filepath.Abs(fs + file)
		info, err := os.Stat(name)
		if err == nil {
			if !info.IsDir() {
				http.ServeFile(c.Writer, c.Request, name)
			} else {
				c.Writer.WriteHeader(http.StatusNotFound)
			}
		} else {
			c.Writer.WriteHeader(http.StatusNotFound)
		}
	})
}

用法:

// 1.创建路由
r := gin.Default()

/*
	第一个参数 代表我的静态资源目录是那个
	例如域名:www.baidu.com , 
	/static/ 代表 www.baidu.com/static/是一个静态资源目录存放的地址

	第二个参数代表我的静态目录在当前目录的那个文件夹下
	- 项目
		- main.go
		- static
		这种静态目录,你的 gin.Default 假设在 main.go 里面写的,
		main.go 和 static 平级,那么你就直接写 ./static/
	
	第三个参数你就直接把 r := gin.Default 的 r 直接丢进去
*/
/
StaticHandler("/static/" , "./static/" , r)
	

反正思路就是这么个思路,有更好的方法控制资源目录可以留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值