登录
首页 >  Golang >  Go问答

在Go中如何从公共文件夹中返回图像?

来源:stackoverflow

时间:2024-03-14 21:18:26 340浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《在Go中如何从公共文件夹中返回图像?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我是新手,如果这是一个明显的问题,那么抱歉,但我没有找到任何东西,所以我在这里发帖。

这实际上是一个由两部分组成的问题。

1) 所以我的项目目录中有这个 web 文件夹。它是公共的,我有一个中间件函数来检查 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)这就是我公开文件夹的方式,但我不想要这样。

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"])

理论要掌握,实操不能落!以上关于《在Go中如何从公共文件夹中返回图像?》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>