【发布时间】:2019-05-16 13:44:37
【问题描述】:
我有一个 Golang Shell 和一个 FileServer 功能,我希望能够更改 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,文件服务器就会关闭。
但无论我从哪个路径启动Server(),路径始终保持不变。
所以如果我从 shell 我 cd 进入另一个文件夹并启动 Server(),我仍然会从可执行文件所在的目录中获取文件。
我想要的是,如果我从 /home/user/Downloads/shell 运行 shell 并在 shell 内将 cd 运行到 /opt,则要在服务器中显示的文件是 /opt 中的文件,而不是 @ 中的文件987654331@
【问题讨论】:
-
你有什么问题?
-
如何设置,以便服务器从 shell 所在的同一目录启动。
-
你所描述的行为正是你应该得到的,假设有两件事:你正在执行一个构建的二进制文件,不是使用
go run;并且您在之前启动您的应用程序之前位于正确的目录中。 -
我使用的是
go run,也许这就是问题所在。不知道如果我使用go run而不是构建的二进制文件,它可能会有所不同。 -
你几乎不应该使用
go run。
标签: go fileserver