spring boot 内置tomcat设置虚拟目录 ,htt

2017-10-17  本文已影响928人  object_cheng

需求是用户上传的照片或视频,比如我要保存到 D:/resource/1_user.jpg

第一步:

在application.yml 中 spring.resources.static-locations:  中加入一个 file:D/resource/

第二步:Shiro的配置中

filterMap.put("/resource/**", "anon");

第三步:写一个配置类WebMvcConfig


@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    @Autowired
    private AuthorizationInterceptor authorizationInterceptor;
    @Autowired
    private LoginUserHandlerMethodArgumentResolver loginUserHandlerMethodArgumentResolver;
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resource/**").addResourceLocations("file:D:/resource/");
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authorizationInterceptor).addPathPatterns("/api/**");
    }
    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(loginUserHandlerMethodArgumentResolver);
    }
}

第四步:在controller中 这样传入userID就可以直接访问这张图片


    @RequestMapping(value = "/user/{userId}", method = RequestMethod.GET)
    @AuthIgnore
    public void getUserIcon(@PathVariable("userId") String userId,HttpServletResponse response){
        UserEntity entity = userService.queryObject(userId);
        try {
            response.sendRedirect(entity.getUserIcon()); //resource/1_user.jpg
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


上一篇下一篇

猜你喜欢

热点阅读