您的位置:首页 > 编程语言 > Java开发

Spring MVC通过MultipartResolver实现单文件,多文件上传的详细讲解。

2017-05-20 18:04 585 查看
Spring MVC实现单文件,多文件上传及其详细配置。Spring使用Jakarta Commons FileUpload实现了一个MultipartResolver实现类:CommonsMultipartResolver。

1. 加入jar包 :Spring MVC文件上传,需要添加如下两个jar包:

commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar


2. Spring 配置 CommonsMultipartResolver:

p:defaultEncoding=”UTF-8”:这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致。

p:maxUploadSize=”5242880”:指定文件上传大小,单位为字节。

p:uploadTempDir=”upload/temp”:文件上传临时目录,上传完成后,就会将临时文件删除。

代码:

<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
<!-- 这里设置默认的文件编码为UTF-8,必须与用户JSP的默认编码一致   -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<!-- 文件上传临时目录,上传完成后,就会将临时文件删除   -->
<property name="uploadTempDir">
<value>upload/temp</value>
</property>
</bean>


截图:



3. JSP 页面:

必须设置才能上传 enctype=”multipart/form-data”

多文件上传注意 file 的 name 值不能重复

代码:

<form action="upload.htm" method="post"  enctype="multipart/form-data">
<div class="imgbox">
<div class="imgnum">
<input type="file" class="filepath" name="pic1" >
</div>
</div>

<div class="imgbox">
<div class="imgnum">
<input type="file" class="filepath" name="pic2" />
</div>
</div>
<P class="btn_p">
<input type="submit" class="btn_submit" value="确认提交" />
</P>
</form>


截图:





4. 控制层代码:

代码:

@RequestMapping("/upload")
public String upload(HttpServletRequest request,MultipartFile file)throws Exception{
// 创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//取得上传文件
file = multiRequest.getFile(iter.next());
//对上传文件进行处理
if(!file.isEmpty()){
//上传图片至此路径下
String path = "D://images//Designer//goods//";
String fileName = file.getOriginalFilename();
File targetFile = new File(path, fileName);
System.out.println("文件路径"+path + "文件名"+fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//保存
try {
file.transferTo(targetFile);
System.out.println("保存成功【"+file.getOriginalFilename()+"】完成...");

} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return "queryDesignerGoods.htm";
}


截图:





5. 效果截图:

测试输出



上传成功

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: