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)
|
||
}
|