web.xml
<!-- 配置springMVC -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- contextConfigLocation 是固定的 -->
<param-name>contextConfigLocation</param-name>
<!-- 配置读取路径-->
<param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<!-- 配置拦截规则-->
<url-pattern>/</url-pattern>
</servlet-mapping>
springAnnotation-servlet.xml
<!-- 配置上传文件-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!--最大上传大小单位字节-->
<property name="maxUploadSize" value="10485760000" />
<!--最大缓存字节-->
<property name="maxInMemorySize" value="40960" />
</bean>
controller
@Controller
@RequestMapping("/file")
public class UploadController {
@RequestMapping("/upload1")
public String addUser(@RequestParam("file") CommonsMultipartFile file,HttpServletRequest request) throws IOException{
//file.getOriginalFilename(): 1.png
if(!file.isEmpty()){
//创建输出流
FileOutputStream os =null;
//获取输入流
InputStream in = null;
//高效输入流
BufferedInputStream bi=null;
//高效输出流
BufferedOutputStream bo=null;
int len=0;
try {
os = new FileOutputStream("E:/"+ file.getOriginalFilename());
in = file.getInputStream();
bi=new BufferedInputStream(in);
bo=new BufferedOutputStream(os);
byte[] arr = new byte[1024];
while((len=bi.read(arr)) != -1){
bo.write(arr, 0, len);
bo.flush();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//释放资源
if(os!=null){
os.close();
}
if(in!=null){
in.close();
}
if(bi!=null){
bi.close();
}
if(bo!=null){
bo.close();
}
}
}
return "/success";
}
//多文件上传
@RequestMapping("/upload2")
public String upload2(HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
///创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 设置编码
multipartResolver.setDefaultEncoding("utf-8");
// 判断 request 是否有文件上传
if(multipartResolver.isMultipart(request)){
// 强转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//获取所有文件
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
String next = (String)iter.next();
//next:file
MultipartFile file = multiRequest.getFile(next);
//file: org.springframework.web.multipart.commons.CommonsMultipartFile@2e574e38
if(file != null){
String fileName = "demoUpload" + file.getOriginalFilename();
String path = "E:/" + fileName;
File localFile = new File(path);
file.transferTo(localFile);
}
}
}
return "/success";
}
}
jsp
<form name="userForm" action="/springMVC1/file/upload1" method="post"enctype="multipart/form-data" >
上传文件方式1:<input type="file" name="file">
<input type="submit" value="上传" >
</form>
<form name="userForm" action="/springMVC1/file/upload2" method="post" enctype="multipart/form-data" >
上传文件方式2:<input type="file" name="file1">
<input type="submit" value="上传" >
</form>