FileSystem
Filesystem middleware for Fiber that enables you to serve files from a directory.
⚠️ :params & :optionals? within the prefix path are not supported!

Table of Contents

Signatures

func New(config Config) fiber.Handler

Examples

Import the middleware package that is part of the Fiber web framework
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
)
After you initiate your Fiber app, you can use the following possibilities:
// Provide a minimal config
app.Use(filesystem.New(filesystem.Config{
Root: http.Dir("./assets")
}))
​
// Or extend your config for customization
app.Use(filesystem.New(filesystem.Config{
Root: http.Dir("./assets"),
Browse: true,
Index: "index.html",
NotFoundFile: "404.html",
MaxAge: 3600,
}))

pkger

package main
​
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
​
"github.com/markbates/pkger"
)
​
func main() {
app := fiber.New()
​
app.Use("/assets", filesystem.New(filesystem.Config{
Root: pkger.Dir("/assets"),
})
​
log.Fatal(app.Listen(":3000"))
}

packr

package main
​
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
​
"github.com/gobuffalo/packr/v2"
)
​
func main() {
app := fiber.New()
​
app.Use("/assets", filesystem.New(filesystem.Config{
Root: packr.New("Assets Box", "/assets"),
})
​
log.Fatal(app.Listen(":3000"))
}

go.rice

package main
​
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
​
"github.com/GeertJohan/go.rice"
)
​
func main() {
app := fiber.New()
​
app.Use("/assets", filesystem.New(filesystem.Config{
Root: rice.MustFindBox("assets").HTTPBox(),
})
​
log.Fatal(app.Listen(":3000"))
}

fileb0x

package main
​
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
​
"<Your go module>/myEmbeddedFiles"
)
​
func main() {
app := fiber.New()
​
app.Use("/assets", filesystem.New(filesystem.Config{
Root: myEmbeddedFiles.HTTP,
})
​
log.Fatal(app.Listen(":3000"))
}

statik

package main
​
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/filesystem"
​
"<Your go module>/statik"
fs "github.com/rakyll/statik/fs"
)
​
func main() {
statik, err := fs.New()
if err != nil {
panic(err)
}
​
app := fiber.New()
​
app.Use("/", filesystem.New(filesystem.Config{
Root: statikFS,
})
​
log.Fatal(app.Listen(":3000"))
}

Config

// Config defines the config for middleware.
type Config struct {
// Next defines a function to skip this middleware when returned true.
//
// Optional. Default: nil
Next func(c *fiber.Ctx) bool
​
// Root is a FileSystem that provides access
// to a collection of files and directories.
//
// Required. Default: nil
Root http.FileSystem `json:"-"`
​
// Enable directory browsing.
//
// Optional. Default: false
Browse bool `json:"browse"`
​
// Index file for serving a directory.
//
// Optional. Default: "index.html"
Index string `json:"index"`
​
// The value for the Cache-Control HTTP-header
// that is set on the file response. MaxAge is defined in seconds.
//
// Optional. Default value 0.
MaxAge int `json:"max_age"`
​
// File to return if path is not found. Useful for SPA's.
//
// Optional. Default: ""
NotFoundFile string `json:"not_found_file"`
}

Default Config

var ConfigDefault = Config{
Next: nil,
Root: nil,
Browse: false,
Index: "/index.html",
MaxAge: 0,
}
Last modified 1yr ago
Copy link
On this page
Table of Contents
Signatures
Examples
pkger
packr
go.rice
fileb0x
statik
Config
Default Config