Static Files
Zinc supports static assets without leaving net/http.
At a glance
Section titled “At a glance”app.Static("/assets", "./public")app.File("/robots.txt", "./public/robots.txt")app.Mount("/files", http.FileServer(http.Dir("./public")))Use Zinc’s static helpers for normal assets and Mount when you already have a standard library handler.
Serve a directory
Section titled “Serve a directory”if err := app.Static("/assets", "./public"); err != nil { log.Fatal(err)}This mounts a static handler under /assets.
Static options
Section titled “Static options”Use static options to control directory behavior.
if err := app.Static("/docs", "./docs-public", zinc.WithStaticIndex("home.html"), zinc.WithStaticBrowse(true),); err != nil { log.Fatal(err)}Available options:
WithStaticIndex(index string)WithStaticBrowse(enabled bool)
Behavior:
- custom index files are served for directory requests when available
- directory listing works when browse mode is enabled
- unsafe traversal paths are rejected
Serve a single file
Section titled “Serve a single file”if err := app.File("/robots.txt", "./public/robots.txt"); err != nil { log.Fatal(err)}Use an fs.FS
Section titled “Use an fs.FS”Zinc works with embedded filesystems and other fs.FS implementations.
if err := app.StaticFS("/assets", embeddedAssets); err != nil { log.Fatal(err)}if err := app.FileFS("/openapi.json", "openapi.json", embeddedAssets); err != nil { log.Fatal(err)}Mounting existing handlers
Section titled “Mounting existing handlers”If you already have a stdlib handler or third-party file server, you can mount it directly:
app.Mount("/files", http.FileServer(http.Dir("./public")))For most Zinc applications, prefer Static and StaticFS first. They keep the setup explicit and consistent with the rest of the framework.
See also
Section titled “See also”- Routing for mounted handlers.
- Static middleware for middleware-shaped static serving.
- App API for
Static,StaticFS,File,FileFS, andMount.
