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

SpringMVC实现多文件上传(一)

2017-10-20 00:00 267 查看
不管是开始学习Java或者SpringMVC的初学者,还是已经开始进行实际开发的开发者,我们都或多或少的会在开发中碰到多文件(图片)上传的问题,那么在这个过程中,我们需要采用什么方法实现相关功能呢?接下来我将简要介绍本人在实际开发中实现 实现的多图片上传的方法。 开发背景:在某功能模块中,当我们进行新增部门的操作中,需要分别上传部门照片及一张Logo图片,也就是说我们需要通过两个文件选择框分别选择需要上传的图片,再和其他信息连同这两张图片传递给后台进行相关处理。

实现步骤:

引入相关Maven架包:

<!--数据上传的包-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>

配置文件上传解析器(spring-mvc.xml中):

<!-- 配置多文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<!-- 上传文件大小限制为31M,31*1024*1024 -->
<value>32505856</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>

前端实现(简):



分别定义两个文件上传选择框进行logo及部门照片的选择,定义不同的名称,以form表单的形式提交给后台,注意需要通过enctype="multipart/form-data"设置表单的MIME编码,通过action标签指明处理接口;

服务器端实现:

@RequestMapping(value = "/collect_info", method = RequestMethod.POST)
public String upload(Model model, HttpServletRequest request) throws IOException {

// 创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
if (multipartResolver.isMultipart(request)) {
MultipartFile file = null;
MultipartFile file2 = null;
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
file = multiRequest.getFileMap().get("file");
String newFile = "";
[code=plain]           List<String> listImagePath=
new
ArrayList<String>();

if (file != null) {
// 取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (myFileName.trim() != "") {
// 重命名上传后的文件名
String fileName = String.valueOf(System.currentTimeMillis());
String path = "F:\\logo";
newFile = fileName + "." + myFileName.substring(myFileName.indexOf(".") + 1);
File localFile = new File(path, newFile);
file.transferTo(localFile);
listImagePath.add(path);

}
}
file2 = multiRequest.getFileMap().get("file2");
if (file2 != null) {
// 取得当前上传文件的文件名称
String myFileName = file2.getOriginalFilename();
// 如果名称不为“”,说明该文件存在,否则说明该文件不存在
if (myFileName.trim() != "") {
// 重命名上传后的文件名
String fileName = String.valueOf(System.currentTimeMillis());
String path = "F:\\pic";
newFile = fileName + "." + myFileName.substring(myFileName.indexOf(".") + 1);
File localFile = new File(path, newFile);
file2.transferTo(localFile);
listImagePath.add(path);

}
}
}
request.setAttribute(
"imagesPathList"
, listImagePath);


return "page/test";
}[/code]
在服务器端实现代码中,分别定义两个MultipartFile接收前端提交过来的两张图片来做相应的逻辑处理,上面的代码中为了方便查看,我将转储地址设置的计算机本地的磁盘,实际开发中应将其存放在服务器上。相应的实现逻辑较简单,在此就不详细介绍。后续将继续推出通过同一选择框选择多个文件进行上传操作的博文,敬请期待。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息