我有一个带有FileServer函数的Golang
Shell,我希望能够更改src目录。
这是我所拥有的:
func Server() {
wdir, _ := os.Getwd()
m := http.NewServeMux()
fs := http.FileServer(http.Dir(wdir))
m.Handle("/", http.StripPrefix("/", fs))
s := http.Server{Addr: ":8000", Handler: m}
m.HandleFunc("/shutdown", func(w http.ResponseWriter, r *http.Request) {
s.Shutdown(context.Background())
})
if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatal(err)
}
log.Printf("Finished")
}
我有这种方式,因此如果我进入shutdown
,FileServer将关闭。
但是无论我从哪个路径启动Server()
,路径始终保持不变。
因此,如果我从外壳程序cd
进入另一个文件夹并启动Server()
,我仍将从可执行文件所在的目录中获取文件。
我想要的是,如果我从/home/user/Downloads/shell
运行shell,然后在cd
的shell中运行到/opt
,则服务器中显示的文件就是{{1 }},而不是/opt
答案 0 :(得分:0)
您可以将FileServer path
引入作为标志,并使用它来创建FileServer。
http.FileServer(http.Dir(path + "/opt")).
请检查go提供的标志library。
在终端中,您可以将pwd
输入该标志值