第一步:导入包 commons-fileuplad组件
第二步:配置springmvc支持上传组件
(1)启动SpringMVC注解支持
(2)配置上传解释器 (对象名必须是固定)
第三步:构建一个上传表单
第四步:在业务控制器编写保存上传文件的逻辑
1.导入包
2.配置文件的配置
<!--启动注解的默认配置--> <mvc:annotation-driven></mvc:annotation-driven> <!-- 文件上传解释器 --> <!-- 名字不能写错,一定是multipartResolver --> <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 默认内存的大小 b--> <!-- <property name="maxInMemorySize" value="512000000" ></property> --> <!-- 默认文件最大大小,b--> <property name="maxUploadSize" value="20000000"></property> </bean> |
3.上传表单
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 文件上传<br/> <!-- 要求 1.method必须是POST 2.内容类型:multipart/form-data --> <form action="${pageContext.request.contextPath }/upload.mvc" method="post" enctype="multipart/form-data"> <input name="file" type="file"> <input type="submit" value="上传"> </form> </body> </html> |
4.后台代码
package cn.gzsxt.controller; import java.io.File; import java.io.IOException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.multipart.MultipartFile; @Controller public class FileUploadController { /** * 注意接收上传文件的接口 * SpringMVC的业务控制器执行方法,除了已经有内置对象的接口,可以声明接口。 * 如果内内置对象声明接口会报错。 * 原因,只有在执行方法上面放一个类或者接口,SpringMVC会先去容器查找是否否兼容类型的对象, * 如果有,就赋予给它,如果没有就会重新创建一个新的对象,如果声明了接口,容器原来没有,新创建的时候就会报错。 * * SpringMVC常见的内置对象有 * 1.Model * 2.ModelMap * 3.HttpServletRequest * 4.HttpServletResponse * 5.HttpSession * 6.MultipartFile * @return */ @RequestMapping(value="upload") public String upload(MultipartFile file){ System.out.println("-文件上传-"); //获得文件的原名 System.out.println(file.getOriginalFilename()); //创建一个文件 File destfile=new File("D:/dir/"+file.getOriginalFilename()); //将读取到的上传文件写入到destfile try { file.transferTo(destfile); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "/upload.jsp"; } } |