Как отправить обратно изображение в Go из общей папки? - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок, если это очевидный вопрос, извините, но я ничего не нашел, поэтому я публикую здесь.

На самом деле это вопрос из двух частей.

1) Итак, у меня есть эта веб-папка в директории моего проекта.И это общедоступно, и у меня есть функция промежуточного программного обеспечения, которая проверяет 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 Ответ

0 голосов
/ 27 сентября 2019

Для # 1: ясно, что путь запроса не один из тех, что указаны в notAuth.Может быть, вам нужно проверить, есть ли у пути префикс, включенный в notAuth?Если это так, вы должны быть осторожны с /, так как он пройдет все пути.Если нет, зарегистрируйте путь запроса и посмотрите, в чем проблема.

Для # 2: вы должны сделать:

http.ServeFile(w,request,filepath.Join(baseDir,mux.Vars(request)["imageName"])
...