一. 前言
在SpringMVC中,我们是通过FileUpload组件来进行文件上传的。
二. 文件上传的步骤
SpringMVC中,为文件的上传提供了直接的支持,这种支持是使用可插拔的组件MultipartResolver实现的,SPring使用FileUpload实现了MultipartResolver接口,实现类名称叫做CommonsMultipartResolver,SpringMVC上下文中并没有默认装配MultipartResolver,因此默认情况是进行不了文件上传的,需要我们在SpringMVC上下文中配置MultipartResolver这个bean。
① 配置:
<!-- 配置multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="6000000"></property>
</bean>
② 添加jar包
commons-fileupload-1.2.1.jar
commons-io-2.0.jar
③ 编写文件上传的表单
<form action="${pageContext.request.contextPath }/testFileUpload" method="post" enctype="multipart/form-data">
File1:<input type="file" name="file1"><br>
Desc:<input type="text" name="desc"><br>
<button>Test FileUpload</button>
</form>
④ 编写请求处理器
@Controller
public class FileUploadController {
@RequestMapping("testFileUpload")
public String testFileUpload(String desc,MultipartFile file1,HttpServletRequest request) throws IllegalStateException, IOException {
File newFile1 = new File(request.getServletContext().getRealPath("/file")+File.separator+file1.getOriginalFilename());
//将上传文件转换成一个新的文件
file1.transferTo(newFile1);
return "success";
}
}
小结
通过代码可以看出,相比于之前在学习JavaWeb进行原生开发时,同样是使用FileUpload进行文件上传,SpringMVC简化了很多操作。需要注意的是,要在SpringMVC配置文件中进行CommonsMultipartResolver(bean)的配置。