一架梯子,一头程序猿,仰望星空!
Iris Web框架教程 > 内容正文

Go Iris静态文件处理


本章介绍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
}