Static middleware
Go to file
appleboy 1bfc746890
chore: update external dependencies to latest versions
- Update `github.com/stretchr/testify` to version `v1.9.0`
- Update `github.com/bytedance/sonic` to version `v1.11.3`
- Update `github.com/go-playground/validator/v10` to version `v10.19.0`
- Update `github.com/klauspost/cpuid/v2` to version `v2.2.7`
- Update `github.com/pelletier/go-toml/v2` to version `v2.2.0`
- Update `golang.org/x/crypto` to version `v0.21.0`
- Update `golang.org/x/net` to version `v0.22.0`
- Update `golang.org/x/sys` to version `v0.18.0`
- Update `google.golang.org/protobuf` to version `v1.33.0`

Signed-off-by: appleboy <appleboy.tw@gmail.com>
2024-03-23 08:18:21 +08:00
.github ci: update Go versions and CI workflows 2024-02-17 16:19:53 +08:00
_example chore: refactor example directory structure 2024-02-17 16:37:16 +08:00
test/data/server feat: Implement embed folder and a better organisation 2021-03-15 19:11:55 +01:00
.gitignore remove vendor files. (#5) 2017-03-15 06:49:17 -05:00
.golangci.yml chore: refactor Lint Configuration for Go Project 2024-02-17 16:19:53 +08:00
.goreleaser.yaml chore(CD): enable goreleaser config. 2024-02-17 16:19:53 +08:00
LICENSE Initial commit 2016-12-13 09:40:49 +08:00
README.md feat: enhance static file serving capabilities 2024-02-17 16:24:16 +08:00
embed_folder.go feat: Implement embed folder and a better organisation 2021-03-15 19:11:55 +01:00
embed_folder_test.go feat: Implement embed folder and a better organisation 2021-03-15 19:11:55 +01:00
go.mod chore: update external dependencies to latest versions 2024-03-23 08:18:21 +08:00
go.sum chore: update external dependencies to latest versions 2024-03-23 08:18:21 +08:00
local_file.go feat: Implement embed folder and a better organisation 2021-03-15 19:11:55 +01:00
local_file_test.go test: improve reliability of file operations 2024-02-17 16:26:13 +08:00
serve.go feat: Implement embed folder and a better organisation 2021-03-15 19:11:55 +01:00
serve_test.go style: refactor tests and update CI configurations 2024-02-17 16:39:35 +08:00

README.md

static middleware

Run Tests codecov Go Report Card GoDoc

Static middleware

Usage

Start using it

Download and install it:

go get github.com/gin-contrib/static

Import it in your code:

import "github.com/gin-contrib/static"

Canonical example

See the example

Serve local file

package main

import (
  "github.com/gin-contrib/static"
  "github.com/gin-gonic/gin"
)

func main() {
  r := gin.Default()

  // if Allow DirectoryIndex
  //r.Use(static.Serve("/", static.LocalFile("/tmp", true)))
  // set prefix
  //r.Use(static.Serve("/static", static.LocalFile("/tmp", true)))

  r.Use(static.Serve("/", static.LocalFile("/tmp", false)))
  r.GET("/ping", func(c *gin.Context) {
    c.String(200, "test")
  })
  // Listen and Server in 0.0.0.0:8080
  r.Run(":8080")
}

Serve embed folder

package main

import (
  "embed"
  "fmt"
  "net/http"

  "github.com/gin-contrib/static"
  "github.com/gin-gonic/gin"
)

//go:embed data
var server embed.FS

func main() {
  r := gin.Default()
  r.Use(static.Serve("/", static.EmbedFolder(server, "data/server")))
  r.GET("/ping", func(c *gin.Context) {
    c.String(200, "test")
  })
  r.NoRoute(func(c *gin.Context) {
    fmt.Printf("%s doesn't exists, redirect on /\n", c.Request.URL.Path)
    c.Redirect(http.StatusMovedPermanently, "/")
  })
  // Listen and Server in 0.0.0.0:8080
  r.Run(":8080")
  if err := r.Run(":8080"); err != nil {
    log.Fatal(err)
  }
}