当客户端提交了multipart请求后,需要由控制器来接收文件,并保存,最后返回响应的信息。在该项目中的controller包下的UploadsController类承担了这项工作。
UploadsController.java
在该控制器中有两个方法:
- index():该方法返回项目首页,也即表单填写页面。
- upload():该方法是处理文件上传请求的控制器方法。@RequestMapping将”/upload”映射到该方法,通过@RequestPart注解来指定接收multipart形式的变量——MultipartFile类型的image。接着,通过MultipartFile类的transferTo()方法将文件写入到文件系统中。
在exception包中有一个ExceptionHandler类。该类是一个Spring 异常通知控制器(controller advice)。
ExceptionHandler.java
@ControllerAdvice注解会将该类中所有添加了@ExceptionHandler注解的类应用到所有控制器中,奥斯卡任何一个控制器的映射方法抛出了IOException都将会由IOException_Handler()方法处理。这大大减少了冗余代码的数量,也使得代码更加整洁也易读。异常处理的详细讲解请参照:SpringMVC入门之十:异常的优化处理