Spring MVC——文件上传

1. 导入jar包
commons-io-2.4.jar、
commons-fileupload-1.2.2.jar

2.在%tomcat根目录%/conf/server.xml中的<host>节点中配置tomcat虚拟目录
<!--
docBase:实际上传路径
path:虚拟路径,访问路径为:http://localhost:8088/image
-->
<Context docBase="E:\zhaorong\temp" path="/image" reloadable="false"/>

3.在spring-mvc.xml配置解析器

<!-- 文件上传 : id名称必须给multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件的最大大小 (以byte字节为单位) 10M-->
<property name="maxUploadSize" value="10485760"></property>
</bean>

4.编写上传页面index.jsp
<form action="upload.action" method="post" enctype="multipart/form-data">

图片:<input type="file" name="multipartFile"><br/><br/>

<img src="http://localhost:8088/image/${fileName}"><br/><br/>

<input type="submit" value="上传">
</form>

5.编写controller代码
public String upload(Model model,MultipartFile multipartFile)//multipartFile名必须与页面的上传对象的名字相同

                              //也可以在一个from表单中上传其他类型的数据,但因为是以post类型提交,所以必须使用request获取
{
try {
System.out.println("保存文件对象:"+ multipartFile);

//原文件名称
String fileName = multipartFile.getOriginalFilename();//Tulips.jpg
System.out.println("原文件名:" + fileName);

//扩展名
String suffix = fileName.substring(fileName.lastIndexOf("."));
System.out.println("扩展名:" + suffix);

//新文件名称
String newFileName = UUID.randomUUID() + suffix;
System.out.println("新文件名:" + newFileName);

//上传路径
File dest = new File("E:\\zhaorong\\temp\\"+newFileName);

//上传
multipartFile.transferTo(dest);

//保存文件名称
model.addAttribute("fileName", newFileName);

} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}

return "index";
}
6.测试
http://localhost:8088/springMvc_07_fileupload/index.jsp

posted @ 2016-12-13 13:44  龙之天族  阅读(190)  评论(0编辑  收藏  举报