golang 静态文件隐藏下载地址
2017-02-28 18:06
176 查看
由于静态文件服务器对对所有请求都是透明的,我想把一部分重要文件对部分特权用户开放下载。即下载前,先验证用户权限,权限满足再开放下载(同时隐藏‘真实’地址)
原理请看Golang. What to use? http.ServeFile(..) or http.FileServer(..)?
由于
是全局设置,对所有请求透明,需要稍作修改。跟踪了一下代码,Controller的Ctx保存了ResponseWriter, Request参数,demo如下
1,路由设置
2,控制器方法
以上代码的作用是:供用户下载private/sample.zip
用户看到的下载地址是:http://localhost:8080/user/testfile
而实际的下载地址是:http://localhost:8080/private/sample.zip
于是这样就达到隐藏文件的目的。
原理请看Golang. What to use? http.ServeFile(..) or http.FileServer(..)?
普通用法
添加路由后,直接使用ServeFile方法即可http.HandleFunc("/static2/", func(w http.ResponseWriter, r *http.Request) { //your code to check privilege //if passed, output file http.ServeFile(w, r, your_file_url) })
在beego框架下的用法
beego静态文件的介绍参看:https://beego.me/docs/mvc/view/static.md由于
beego.SetStaticPath("/static","public")
是全局设置,对所有请求透明,需要稍作修改。跟踪了一下代码,Controller的Ctx保存了ResponseWriter, Request参数,demo如下
1,路由设置
beego.Router("/user/testfile",&controllers.UserController{},"*:TestFile")
2,控制器方法
func (c *UserController) TestFile() { //todo check file if exist //output file http.ServeFile(c.Ctx.ResponseWriter, c.Ctx.Request, "private/sample.zip") }
以上代码的作用是:供用户下载private/sample.zip
用户看到的下载地址是:http://localhost:8080/user/testfile
而实际的下载地址是:http://localhost:8080/private/sample.zip
于是这样就达到隐藏文件的目的。
相关文章推荐
- C#中如何下载大文件、隐藏文件真实地址
- PHP每天自动更新静态文件下载地址,防盗链
- php运用readfile函数给隐藏下载文件地址增加权限判断
- anp.net文件下载,实现隐藏文件地址
- 采用header定义为文件然后readfile下载(隐藏下载地址)
- php运用readfile函数给隐藏下载文件地址增加权限判断
- 使用php隐藏下载文件的真实地址
- Go实战--golang实现静态文件服务器(文件查看,文件上传,文件下载)
- php隐藏实际地址的文件下载方法
- asp.net文件下载,实现隐藏文件下载地址
- 点击提示用户下载文件并隐藏文件地址
- Asp实现隐藏文件下载地址方法
- 采用header定义为文件然后readfile下载(隐藏下载地址)
- 如何使用Asp来隐藏文件的实际下载路径
- 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量
- 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
- Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)
- 如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量
- C#隐藏文件下载路径的方法
- Asp.net下实现隐藏真实下载地址(可以实现简单的防盗链)