コンテンツにスキップ

静的ファイルの配信

Echo はファイルシステムまたは埋め込みファイルシステムから、画像、JavaScript、CSS、 PDF、フォントなどの静的アセットを配信できます。

Echo は現在の作業ディレクトリをルートにした os.DirFS(".") をデフォルトファイルシステムとして使います。 変更するには Echo#Filesystem フィールドを設定します。

e := echo.New()
e.Filesystem = os.DirFS("assets")

Static ミドルウェアを参照してください。

Echo#Static(prefix, root string) は、指定した root ディレクトリからパス prefix 配下の 静的ファイルを配信するルートを登録します。

assets から /static/* 配下で任意のファイルを配信します。/static/js/main.js へのリクエストは assets/js/main.js を配信します。

e := echo.New()
e.Static("/static", "assets")

assets から /* 配下で任意のファイルを配信します。/js/main.js へのリクエストは assets/js/main.js を配信します。

e := echo.New()
e.Static("/", "assets")

静的ファイルは embed.FS を含む任意の fs.FS から配信できます。配信されるファイルが 正しいサブディレクトリをルートにするよう、echo.MustSubFS を使います。embed.FS は サブディレクトリもそれぞれのエントリとして含みます。

//go:embed "assets/images"
var images embed.FS
func main() {
e := echo.New()
e.StaticFS("/images", echo.MustSubFS(images, "assets/images"))
sc := echo.StartConfig{Address: ":1323"}
if err := sc.Start(context.Background(), e); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}

Echo#File(path, file string) は、単一の静的ファイルを配信するルートを登録します。

public/index.html からインデックスページを配信します。

e.File("/", "public/index.html")

app/assets/favicon.ico から favicon を配信します。

e := echo.New()
e.Filesystem = os.DirFS("/")
e.File("/favicon.ico", "app/assets/favicon.ico") // The file path must not have a leading slash.