因为SpringBoot集成了SpringSecurity图片上传访问就有问题了,SpringSecurity会过滤掉一些静态文件,而且这时已经不能用WebMvcConfigurer去映射静态文件路径,但Spring官网给了我们另一个解决办法,WebMvcConfigurationSupport集成这个类,然后重写addResourceHandlers方法,这样就可以解决了,至于在配置文件配置静态资源文件路径这是没有用的,而且这个配置已经过期了,揪起根本就是本地文件映射到路径上去,url不能访问到本地的图片,如果不映射根本无法加载本地图片,废话少说,上代码。
2、配置类@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//class目录下的
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
//windows目录下的
registry.addResourceHandler("/fileupload/**").addResourceLocations("file:D:/fileupload/");
}
}
3、controller控制层
//修改头像
@RequestMapping("/headImg")
public Object headImg(MultipartFile file,
HttpSession session,
Model model) throws Exception {
Long id= (Long) session.getAttribute("loginUser");
// 将文件接收后,存放一个固定地方,然后将路径拿过来
String name = file.getOriginalFilename();
try {
Path path= Paths.get("D:","fileupload",id+name);
// 存放
file.transferTo(path);
// 文件在前端访问的src
String src = "/fileupload/";
String url1 = URLDecoder.decode(src);
//图片存放到数据库
userService.upload_Img(id,id+name);
User user=userService.freshInfo(id);
session.setAttribute("head",url1+user.getPhot_url());
}catch (IOException e){
e.printStackTrace();
model.addAttribute("e_msg","上传失败!");
return "info_profile";
}
model.addAttribute("s_msg","上传成功!");
return "back/info_profile";
}



