can';t在golang中提供静态html文件

can';t在golang中提供静态html文件,html,go,Html,Go,我正在努力学习golang的在线视频课程,但在提供静态html文件时遇到了一个错误 package main import ( "io/ioutil" "net/http" ) func main() { http.Handle("/", new(MyHandler)) http.ListenAndServe(":8000", nil) } type MyHandler struct { http.Handler } func (this *MyH

我正在努力学习golang的在线视频课程,但在提供静态html文件时遇到了一个错误

package main

import (
    "io/ioutil"
    "net/http"
)

func main() {
    http.Handle("/", new(MyHandler))
    http.ListenAndServe(":8000", nil)
}

type MyHandler struct {
    http.Handler
}

func (this *MyHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
    path := "public/" + req.URL.Path
    data, err := ioutil.ReadFile(string(path))

    if err == nil {
        w.Write(data)
    } else {
        w.WriteHeader(404)
        w.Write([]byte("404 - " + http.StatusText(404)))
    }
}
我的文件夹结构
.

根据到文件夹结构的链接,我猜您需要
路径:=>。/public/“+req.URL.path
。您的应用程序正在从
bin
目录运行,因此您不能直接进入同级目录,您需要
从一个目录中退出,此时
public
实际上是一个选项。

根据到文件夹结构的链接,我猜您需要
路径:=“./public/”+req.URL.Path
。您的应用程序正在从
bin
目录运行,因此您不能直接进入同级目录,您需要
退出一个目录,此时
public
实际上是一个选项。

正确路径为.././public,因为main.go文件位于main/src文件夹中。

正确路径为.././public,因为main.go文件位于main/src文件夹中。

path:=“public/”+req.URL.path路径设置不正确。最简单的方法是为公众提供绝对根路径。但讲师似乎让它工作,你能给我一个如何使其正确的链接吗?@Shavkat你是从你认为的地方运行可执行文件的吗?顺便说一句,你的指导老师的代码真的不是惯用语。@Not_a_Golfer我只是无法访问/html/home.html文件,我得到404path:=“public/”+req.URL.Path路径设置不正确。最简单的方法是为公众提供绝对根路径。但讲师似乎让它工作,你能给我一个如何使其正确的链接吗?@Shavkat你是从你认为的地方运行可执行文件的吗?顺便说一句,你的指导老师的代码真的很不地道。@Not_a_Golfer我就是不能访问/html/home.html文件我得到404它找不到任何文件,即使主页是404也找不到found@Shavkat它不会在
bin
bin/public
中找到任何内容,因为该文件夹不存在。它需要查看
。/public
。读取时,该目录或应用程序当前工作目录不是
bin
,我假设在这种情况下,请尝试绝对路径/找出您的CWD是什么,然后从那里创建您的路径。这里唯一的问题是你的路径肯定是错误的。它找不到任何文件,即使主页是404也找不到found@Shavkat它不会在
bin
bin/public
中找到任何内容,因为该文件夹不存在。它需要查看
。/public
。读取时,该目录或应用程序当前工作目录不是
bin
,我假设在这种情况下,请尝试绝对路径/找出您的CWD是什么,然后从那里创建您的路径。这里唯一的问题是你的道路肯定是错误的。