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 configapp.Use(filesystem.New(filesystem.Config{Root: http.Dir("./assets")}))// Or extend your config for customizationapp.Use(filesystem.New(filesystem.Config{Root: http.Dir("./assets"),Browse: true,Index: "index.html",NotFoundFile: "404.html",MaxAge: 3600,}))
pkger
https://github.com/markbates/pkger
package mainimport ("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
https://github.com/gobuffalo/packr
package mainimport ("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
https://github.com/GeertJohan/go.rice
package mainimport ("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
https://github.com/UnnoTed/fileb0x
package mainimport ("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
https://github.com/rakyll/statik
package mainimport ("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: nilNext func(c *fiber.Ctx) bool// Root is a FileSystem that provides access// to a collection of files and directories.//// Required. Default: nilRoot http.FileSystem `json:"-"`// Enable directory browsing.//// Optional. Default: falseBrowse 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,}