在SpringMVC的开发中我们必不可少的需要用到文件上传功能,其开发步骤与Struts2有一些相似之处,在本文中通过一个图片上传的案例进行讲解。
在进行文件上传的开发时我们需要加入如下jar包:
百度云下载:点击下载
首先我们先看一下上传图片的页面代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!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>图片上传</title>
</head>
<body>
<form id="phtotForm" action="${pageContext.request.contextPath }/data/photoUpload.action" method="post" enctype="multipart/form-data">
<input type="file" name="pictureFile"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
如上代码所示,在form标签中我们可以看到有了一个enctype="multipart/form-data"的属性,这个属性就指定了我们上传的是文件类型,那么在speinrmvc中我们就要对multipart类型的数据进行解析。
注意:<input type="file" name="pictureFile"/> 中的name与Conreoller方法的参数MultipartFile pictureFile一致。
则在springmvc.xml中添加解析器代码如下:
<!-- 文件上传配置 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸 -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
接下来我们可以在Controller中进行上传文件的后台的编写了:
//图片上传功能实现
@RequestMapping("/photoUpload")
public String photoUpload(Model model,MultipartFile pictureFile){
//选择文件的名称
String picture_name = pictureFile.getOriginalFilename();
//上传图片
File uploadPic = new java.io.File("E:/JavaWeb/Servlet/fileupload/temp/"+picture_name);
if(uploadPic.exists()){
uploadPic.mkdirs();
}
//向磁盘写入文件
try {
pictureFile.transferTo(uploadPic);
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
}
model.addAttribute("picture_name", picture_name);
model.addAttribute("mkdir", uploadPic);
return "/FileUploadSuccess";
}
如上代码所示,即将页面选中的图片上传到了指定的目录中去,其文件名不变。
图片上传成功后,跳转到成功页面:
<%@ 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>上传成功</title>
</head>
<body>
<p>图片文件上传成功</p>
<p>文件名称:</p>
<p>${picture_name}</p>
<p>上传图片如下:</p>
<img alt="上传图片" src="${mkdir}">
</body>
</html>
接下来我们进行一个上传图片文件的测试:
如上为上传图片界面,通过输入框选择了图片,点击上传如下:
如上我们可以看到,此文件已经上传成功了,已经可以在页面显示我们之前上传的图片,我们再看一下目录是否已经存在此文件:
如上所示,服务器目录也已经存在此图片文件,则我们的上传图片文件的案例运行成功。