1:在applicationContext.xml文件里面添加一下内容:
<!-- 文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 解析request的编码 ,Default is ISO-8859-1 -->
<property name="defaultEncoding" value="UTF-8" />
<!-- 设置最大允许的大小(字节)。-1表示没有限制(默认) 1024*1024*10=10MB -->
<property name="maxUploadSize" value="1048576000" />
<!--被允许的最大的内存的大小,Default is 10240 bytes -->
<property name="maxInMemorySize" value="20480" />
<!-- 一个类似懒加载的属性.可以定义该属性.让解析文件的时候再抛异常,然后Controller中定义异常处理的方法 -->
<property name="resolveLazily" value="true" />
</bean>
2:jsp页面至少有一个简单的选择文件的按钮
<form action="${pageContext.request.contextPath}/**/**.htm" method="post" enctype="multipart/form-data" >
选择文件:<input type="file" name="file" id="file"/>
<input type="submit" value="提交" />
3:上传的工具类
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
public class Upload {
public static String upLoad(HttpServletRequest request, HttpServletResponse response,String path) throws IllegalStateException, IOException{
//解析器解析request的上下文
CommonsMultipartResolver multipartResolver =new CommonsMultipartResolver(request.getSession().getServletContext());
String fileName="";
//先判断request中是否包涵multipart类型的数据,
if(multipartResolver.isMultipart(request)){
//再将request中的数据转化成multipart类型的数据
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
@SuppressWarnings("rawtypes")
Iterator iter = multiRequest.getFileNames();
while(iter.hasNext()){
MultipartFile file = multiRequest.getFile((String)iter.next());
if(file != null){
fileName = file.getOriginalFilename();
String bpath = path+fileName;
File localFile = new File(bpath);
//写文件到本地
file.transferTo(localFile);
}
}
}
return fileName;
}
}
4:在相应的控制器里面写
String basePath = request.getSession().getServletContext().getRealPath("/")+"upload"+File.separator;
String fileName = Upload.upLoad(request, response, basePath);//文件名称
至此,一个简单的文件上传功能完成!!!