
# 单个文件大小
spring.servlet.multipart.max-file-size=10MB
# 每次请求所有文件大小
spring.servlet.multipart.max-request-size=10MB
@RestController
public class FileUploadController {
@PostMapping("/upload")
public String up(String nickname, MultipartFile photo, HttpServletRequest request) throws IOException{
System.out.println(nickname);
//获取图片的原始名称
System.out.println(photo.getOriginalFilename());
//获取文件类型
System.out.println(photo.getContentType());
String path = request.getServletContext().getRealPath("/upload/");
System.out.println(path);
saveFile(photo,path);
return "上传成功";
}
public void saveFile(MultipartFile photo, String path) throws IOException {
// 判断存储的目录是否存在,如果不存在则创建
File dir = new File(path);
if (!dir.exists()){
//创建目录
dir.mkdir();
}
File file = new File(path+photo.getOriginalFilename());
photo.transferTo(file);
}
}
修改浏览器访问此图片的路径为:
# 第一个斜线代表服务器所在的目录
spring.web.resources.static-locations=/upload/
SpringBoot定义了HandlerInterceptor接口来实现自定义拦截器的功能。
HandlerInterceptor接口定义了preHandle、postHandle、afterCompletion三种方法,通过重写这三种方法实现请求前、请求后等操作。
下面定义一个拦截器(注意:定义之后还要注册,此拦截器才能生效),实现HandlerInterceptor接口并重写父类方法
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("LoginInterceptor");
return true;
}
}
@Configuration //加上该注解后SpringBoot会自动读取这个类,这样下面的配置才能生效
public class WebConfig implements WebMvcConfigurer {
@Override //重写父类的增加拦截器的方法
public void addInterceptors(InterceptorRegistry registry) {
//把定义的拦截器new出来
//registry.addInterceptor(new LoginInterceptor());
// 只拦截/user/**路径
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/postTest1");
}
}
登录查看全部
参与评论
手机查看
返回顶部