如何从 public 文件夹发回 Go 中的图像?
How to send back an image in Go from the public folder?
我是新来的,如果这是一个明显的问题,那么抱歉,但我没有找到任何东西,所以我在这里发帖。
这实际上是一个两部分的问题。
1) 所以我的项目目录中有这个 web 文件夹。它是 public,我有一个正在检查 JWT 的中间件功能。
我正在使用此逻辑来避免 JWT 身份验证,但它现在可以正常工作了。我得到 unauthorized
.
// List of endpoints that don't require auth by an access token
notAuth := []string{"/", "/refreshtokens", "/students/signup", "/students/signin", "/students/forgotpassword",
"/images"}
// Current request path
requestPath := r.URL.Path
// Check if the request does not need authentication, serve the request if it doesn't need it
for _, value := range notAuth {
if value == requestPath {
next.ServeHTTP(w, r)
return
}
}
那么如何将这个 URL 放入数组中以便它可以逃脱 JWT 授权?
2) 这就是我制作文件夹的方式 public 但我不想要这个。
router.PathPrefix("/images").Handler(http.StripPrefix("/images", http.FileServer(http.Dir("./web/"))))
我想要的是这样的东西
router.Handle("/image/{imageName}",func(w http.ResponseWriter, request *http.Request){
http.ServeFile(this image name file)
})
所以我可以发回请求的文件。
任何帮助将不胜感激。
对于 #1:显然请求路径不是 notAuth
中的路径之一。也许您需要检查路径是否包含 notAuth
中的前缀?如果是这样,您需要小心 /
,因为它会通过所有路径。如果不是,请记录请求路径,看看是什么问题。
对于 #2:你应该能够做到:
http.ServeFile(w,request,filepath.Join(baseDir,mux.Vars(request)["imageName"])
我是新来的,如果这是一个明显的问题,那么抱歉,但我没有找到任何东西,所以我在这里发帖。
这实际上是一个两部分的问题。
1) 所以我的项目目录中有这个 web 文件夹。它是 public,我有一个正在检查 JWT 的中间件功能。
我正在使用此逻辑来避免 JWT 身份验证,但它现在可以正常工作了。我得到 unauthorized
.
// List of endpoints that don't require auth by an access token
notAuth := []string{"/", "/refreshtokens", "/students/signup", "/students/signin", "/students/forgotpassword",
"/images"}
// Current request path
requestPath := r.URL.Path
// Check if the request does not need authentication, serve the request if it doesn't need it
for _, value := range notAuth {
if value == requestPath {
next.ServeHTTP(w, r)
return
}
}
那么如何将这个 URL 放入数组中以便它可以逃脱 JWT 授权?
2) 这就是我制作文件夹的方式 public 但我不想要这个。
router.PathPrefix("/images").Handler(http.StripPrefix("/images", http.FileServer(http.Dir("./web/"))))
我想要的是这样的东西
router.Handle("/image/{imageName}",func(w http.ResponseWriter, request *http.Request){
http.ServeFile(this image name file)
})
所以我可以发回请求的文件。
任何帮助将不胜感激。
对于 #1:显然请求路径不是 notAuth
中的路径之一。也许您需要检查路径是否包含 notAuth
中的前缀?如果是这样,您需要小心 /
,因为它会通过所有路径。如果不是,请记录请求路径,看看是什么问题。
对于 #2:你应该能够做到:
http.ServeFile(w,request,filepath.Join(baseDir,mux.Vars(request)["imageName"])