springmvc文件上传

来源:互联网 发布:知乎女神扒皮 编辑:程序博客网 时间:2024/06/03 09:11

SpringMVC支持文件上传组件.commons-fileupload组件. commons-fileupload依赖commons-io组件.

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.后台代码

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;@Controllerpublic class FileUploadController {/** * 单文件上传执行方法 * @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());//将读取到的上传文件写入到destfiletry {file.transferTo(destfile);} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "/upload.jsp";}}

注意,因为核心控制器对上传解释器的名字是固定的. 是multipartResolver,所以我们配置上传解释器,名字必须是multipartResolver

public static final String MULTIPART_RESOLVER_BEAN_NAME =     "multipartResolver";this.multipartResolver = context.getBean(MULTIPART_RESOLVER_BEAN_NAME, MultipartResolver.class);


表单代码

<%@ 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  3.多文件上传是使用数组,所以上传框的name要一样   -->  <form action="${pageContext.request.contextPath }/multi-upload.mvc" method="post" enctype="multipart/form-data">     <input name="files" type="file"> <br/>     <input name="files" type="file"> <br/>     <input name="files" type="file"> <br/>     <input type="submit" value="上传">  </form></body></html>

后台代码

/** * 多文件文件上传执行方法 *  * @return */@RequestMapping(value = "multi-upload")public String multiUpload(MultipartFile[] files) {System.out.println("-文件上传-");// 多文件需要使用循环将所有的文件保存到本地for (MultipartFile file : files) {// 获得文件的原名System.out.println(file.getOriginalFilename());// 1.创建一个文件,如果file.getOriginalFilename()为空,destfile就是一个文件夹File destfile = new File("D:/dir/" + file.getOriginalFilename());// 2.将上传文件 保存到写入目标文件//判断destfile是个文件在写入if (destfile.isFile()) {try {file.transferTo(destfile);} catch (IllegalStateException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return "/multi-upload.jsp";}



原创粉丝点击