本章介绍Go Iris框架,如何处理静态的文件,有时候项目上有一些静态文件希望直接暴露出去让用户访问,该怎么设置。
Iris暴露静态文件
func main() {
app := iris.New()
// 设置页面ico
app.Favicon("./resources/favicon.ico")
// 设置静态文件路径和绑定url路由
app.HandleDir("/assets", iris.Dir("./assets"))
app.Listen(":8080")
}
HandleDir 方法接受第三个可选参数 DirOptions:
type DirOptions struct {
// 默认为"/index.html",如果请求路径以 **/*/$IndexName 结尾,则重定向为 **/*(/)
// 则重定向到另一个处理程序正在处理的 **/*(/)、
// 另一个名为索引处理程序的处理程序由框架自动注册。
// 如果终端开发人员没有手动处理它。
IndexName string
// PushTargets 文件名(映射的值),以
// 在没有额外客户端请求的情况下提供服务(HTTP/2 推送)
// 当特定请求路径(不带前缀的映射表键)
// 请求的路径(map 的 key,不含前缀)不是目录(是一个 `IndexFile` 文件)时。
//
// 示例
// "/":{
// "favicon.ico"、
// "js/main.js"、
// "css/main.css"、
// }
PushTargets map[string][]string
// PushTargetsRegexp 与 `PushTargets` 类似,但接受 regexp,该 regexp 将与目录下的所有文件进行比较。
// 与目录下的所有文件进行比较(递归)。
// `IndexName` 应该设置。
//
// 示例
// "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
// 也请参见 `iris.MatchCommonAssets`.
PushTargetsRegexp map[string]*regexp.Regexp
// 缓存以启用内存缓存和预压缩文件。
Cache DirCacheOptions
// 文件何时应在压缩状态下提供。
Compress bool
// 如果未找到 `IndexName` 则列出当前请求目录中的文件。
ShowList bool
// 如果 `ShowList` 为 true,则将使用此函数来代替默认的
// 如果 `ShowList` 为 true,则将使用此函数来显示当前请求目录(dir)的文件列表。
// 也请参见 `DirListRich` 软件包级函数。
DirList DirListFunc
// 下载并保存在本地的文件。
Attachments Attachments
// 可选的验证器,用于循环查看每个请求的资源。
AssetValidator func(ctx *context.Context, name string) bool
}