Go处理路由静态资源文件请求[mux]
本文最后更新于 2024-08-08,文章内容可能已经过时。
//静态路由处理
var DirPath = fmt.Sprintf("%v/static/",GetCurrentAbPath()) //获取静态资源文件夹绝对路径
r.PathPrefix("/static/").Handler(
http.StripPrefix("/static/", http.FileServer(http.Dir(DirPath))))
// GetCurrentAbPath 获取当前程序运行路径
func GetCurrentAbPath() string {
dir := GetCurrentAbPathByExecutable()
if strings.Contains(dir, GetTmpDir()) {
return GetCurrentAbPathByCaller()
}
return dir
}
// GetTmpDir 获取系统临时目录,兼容go run
func GetTmpDir() string {
dir := os.Getenv("TEMP")
if dir == "" {
dir = os.Getenv("TMP")
}
res, _ := filepath.EvalSymlinks(dir)
return res
}
// GetCurrentAbPathByExecutable 获取当前执行文件绝对路径
func GetCurrentAbPathByExecutable() string {
exePath, err := os.Executable()
if err != nil {
log.Fatal(err)
}
res, _ := filepath.EvalSymlinks(filepath.Dir(exePath))
return res
}
// GetCurrentAbPathByCaller 获取当前执行文件绝对路径(go run)
func GetCurrentAbPathByCaller() string {
var abPath string
_, filename, _, ok := runtime.Caller(0)
if ok {
abPath = path.Dir(filename)
}
return abPath
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 晴玖科技
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果