带有自定义CSS的Golang FileServer

时间:2018-08-16 16:12:52

标签: go

我已经考虑过使用Go为自己的家创建一个小型文件服务器。通常replies = EmailMessage.joins(:email_conversation) .where(<irrelevant selectors>) .group('email_conversations.user_id', 'email_messages.email_conversation_id').count 会像这样丑陋地管理文件和目录:

enter image description here

是否可以将CSS添加到此站点?例如更改颜色。先谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

有一个骇人听闻的解决方案,它利用了http.ResponseWriter完成后可以继续写入http.FileServer的事实。一般不建议使用,但是在这种情况下,可以接受。

package main

import (
        "io"
        "log"
        "net/http"
)

const (
        link = `<link rel="stylesheet" href="/path/to/style.css">`
)

func main() {
        fs := http.FileServer(http.Dir("/tmp"))
        var handler http.HandlerFunc
        handler = func(w http.ResponseWriter, r *http.Request) {
                var (
                        url   = r.URL.Path
                        isDir = url[len(url)-1] == '/'
                )
                fs.ServeHTTP(w, r)
                if isDir {
                        io.WriteString(w, link)
                }
        }
        log.Fatal(http.ListenAndServe(":8080", handler))
}