springMVC 多文件上传

来源:互联网 发布:人防大数据 编辑:程序博客网 时间:2024/05/01 14:48

采用springMVC 框架技术做了一个多文件上传的小功能,实现方式如下:

1. 导入相关Jar包,除了springMVC 框架自身所需的包外,还需要导入文件上传的Jar包:commons-fileupload-1.3.1.jar 及  commons-io-2.2.jar 这两个包,这两个包可以从其他地方找到下载,加入到WEB-INFO目录中的lib子目录中,自动引入到Web项目中来。

2. springMVC 的配置文件(springMVC-servlet.xml)中配置文件上传相关配置信息,配置如下:

      <!-- 文件上传时相关配置,上传文件大小限制、缓存空间、字符编码 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10485760" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>

2.编写视图Jsp文件,表单必须有name属性及 enctype="multipart/form-data"属性设置:

    <body>
<h2>多文件上传</h2> 
<form name="Form3" action="springUpload" method="post"
enctype="multipart/form-data">
<h3>使用spring mvc提供的类的方法上传文件</h3>
<p><input type="file" name="file1"></p>
<p><input type="file" name="file2"></p>
<p><input type="file" name="file3"></p>
<input type="submit" value="上传" />
</form>
</body>

3. 编写Controller 类的中代码:

   @Controller
   public class FileUploadController {
@RequestMapping("springUpload")
public String springUpload(HttpServletRequest request) throws Exception { 
// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 检查form中是否有 enctype="multipart/form-data"属性值
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest 中所有的文件名
Iterator iter = multiRequest.getFileNames(); 
while (iter.hasNext()) {
// 一次遍历所有文件
MultipartFile file = multiRequest.getFile(iter.next().toString()); 
if (file != null) {

                                        //设置文件上传路径,此路径为项目发布路径的根目录,及文件在客户端的文件名,一般情况下是需要改文件名的。
String path = request.getSession().getServletContext()
.getRealPath("/userfile/") + file.getOriginalFilename();
// 上传
file.transferTo(new File(path));
}
}
}
return "fileUpload";  //返回视图名
}
}

原创粉丝点击