35 lines
663 B
Go
35 lines
663 B
Go
|
package handler
|
|||
|
|
|||
|
import (
|
|||
|
"net/http"
|
|||
|
"os"
|
|||
|
"path/filepath"
|
|||
|
)
|
|||
|
|
|||
|
func StaticHandler(w http.ResponseWriter, r *http.Request) {
|
|||
|
// 文件服务器的根目录
|
|||
|
root := "./static"
|
|||
|
|
|||
|
// 自定义文件处理器
|
|||
|
fileHandler := http.StripPrefix("/static/", http.FileServer(http.Dir(root)))
|
|||
|
|
|||
|
// 获取请求的路径
|
|||
|
path := filepath.Join(root, r.URL.Path[len("/static/"):])
|
|||
|
|
|||
|
// 检查路径是否是一个目录
|
|||
|
info, err := os.Stat(path)
|
|||
|
if err != nil {
|
|||
|
// 如果文件不存在,返回404
|
|||
|
http.NotFound(w, r)
|
|||
|
return
|
|||
|
}
|
|||
|
if info.IsDir() {
|
|||
|
// 如果是目录,返回404
|
|||
|
http.NotFound(w, r)
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
// 处理文件
|
|||
|
fileHandler.ServeHTTP(w, r)
|
|||
|
}
|