需求是用户上传的照片或视频,比如我要保存到 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();
}
}
网友评论