files我的 Golang 项目目录根目录中的文件夹中有一个名为test.jpg. 那就是./files/test.jpg 我想服务于我的前端,但我遇到了困难。
我的 golang 项目在一个附有以下卷的 docker 文件中。(基本上就是说在docker容器里可以在服务器上/go/.../webserver读写出来)./
volumes:
- ./:/go/src/github.com/patientplatypus/webserver/
我正在使用gorilla/mux由以下定义的路由:
r := mux.NewRouter()
以下是我尝试使 PathPrefix 正确格式化的一些尝试:
r.PathPrefix("/files/").Handler(http.StripPrefix("/files/",
http.FileServer(http.Dir("/go/src/github.com/patientplatypus/webserver/files/"))))
或者
r.PathPrefix("/files").Handler(http.FileServer(http.Dir("./files/")))
或者
r.PathPrefix("/files/").Handler(http.StripPrefix("/files/",
http.FileServer(http.Dir("./"))))
或者
r.PathPrefix("/files/").Handler(http.FileServer(
http.Dir("/go/src/github.com/patientplatypus/webserver/")))
我之前使用以下命令成功写入服务器:
newPath := filepath.Join("/go/src/github.com/patientplatypus/webserver/files",
"test.jpg")
newFile, err := os.Create(newPath)
所以我的直觉是,我的第一次尝试应该是正确的,指定了整个路径/go/.../files/。
在任何情况下,我的每次尝试都成功地将一个空的 response.data200OK返回到我的前端,如下所示:
Object { data: "", status: 200, statusText: "OK",
headers: {…}, config: {…}, request: XMLHttpRequest }
它来自使用axios包的简单 js 前端 http 请求:
axios({
method: 'get',
url: 'http://localhost:8000/files/test.jpg',
})
.then(response => {
//handle success
console.log("inside return for test.jpg and value
of response: ")
console.log(response);
console.log("value of response.data: ")
console.log(response.data)
this.image = response.data;
})
.catch(function (error) {
//handle error
console.log(error);
});
关于为什么会发生这种情况,我唯一的猜测是它没有看到该文件,因此什么也不返回。
对于这样一个看似微不足道的问题,我正处于猜测和检查阶段,不知道如何进一步调试。如果有人有任何想法,请告诉我。
喵喵时光机
大话西游666
GCT1015
慕哥6287543
相关分类