1、添加依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2、在spring-mvc.xml中配置
上传要配置上传大小,单文件最大不超过 5 MB,
总大小不超过 45 MB
<!--文件上传配置-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--设置字符集-->
<property name="defaultEncoding" value="UTF-8"/>
<!--设置上传文件大小-->
<property name="maxUploadSizePerFile" value="5242880"/>
<!--设置总大小-->
<property name="maxUploadSize" value="47185920"/>
</bean>
3、页面
文件上传表单设置 enctype=“multipart/form-data”
age contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>文件上传</title>
</head>
<body>
单个文件上传
<form action="${pageContext.request.contextPath}/upload.action" method="post"
enctype="multipart/form-data">
头像: <input type="file" name="imgName" ><input type="submit">
</form>
<hr/>
多文件上传
<form action="${pageContext.request.contextPath}/uploadMany.action" method="post"
enctype="multipart/form-data">
头像: <input type="file" multiple="multiple" name="fileMany" ><input type="submit">
</form>
<hr/>
多文件上传 分包处理
<form action="${pageContext.request.contextPath}/uploadManyPage.action" method="post"
enctype="multipart/form-data">
头像: <input type="file" multiple="multiple" name="fileManyPage" ><input type="submit">
</form>
<hr/>
多文件上传 分包处理 工具类
<form action="${pageContext.request.contextPath}/uploadManyPageUtil.action" method="post"
enctype="multipart/form-data">
头像: <input type="file" multiple="multiple" name="fileMany" ><input type="submit">
</form>
</body>
</html>
4、控制器
@Controller
public class UploadController {
/**
* 上传单个文件
* @param imgName
* @return
*/
@RequestMapping(value = "/upload.action",produces = "application/json;charset=utf-8")
@ResponseBody
public String upload(MultipartFile imgName){
String originalFilename = imgName.getOriginalFilename();
try {
imgName.transferTo(new File("E:\\images",originalFilename));
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
@RequestMapping(value = "/uploadMany.action",produces = "application/json;charset=utf-8")
@ResponseBody
public String uploadMany(MultipartRequest request){
List<MultipartFile> multipartFileList = request.getFiles("fileMany");
try {
for (int i = 0; multipartFileList!=null && i < multipartFileList.size() ; i++) {
MultipartFile multipartFile = multipartFileList.get(i);
String originalFilename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("E:\\images",originalFilename));
}
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
/**
* 多包处理图片
* @param request
* @return
*/
@RequestMapping(value = "/uploadManyPage.action",produces =
"application/json;charset=utf-8")
@ResponseBody
public String uploadManyPage(MultipartRequest request){
// e:/images/2019/06/04/16/51/35/UUID.jpg
List<MultipartFile> multipartFileList = request.getFiles("fileManyPage");
try {
for (int i = 0; multipartFileList!=null && i < multipartFileList.size() ; i++) {
MultipartFile multipartFile = multipartFileList.get(i);
//获取图片的名称 part D:imgsa.jsp q.qwe.qwe.qwe.12.asd.asd.as.jsp
String originalFilename = multipartFile.getOriginalFilename();
//获取文件类型
String lastPath
=originalFilename.substring(originalFilename.lastIndexOf("."));
//uuid
String uuidPath = UUID.randomUUID().toString();
//获取日期包
String datePath = new SimpleDateFormat("yyyy\\MM\\dd\\HH\\mm\\ss").format(new
Date());
//完成路径
File file = new File("E:\\images",datePath);
//判断文件夹是否存在
if(!file.exists()){
file.mkdirs();
}
String endPath ="E:\\images\\"+datePath+"\\"+uuidPath+lastPath ;
System.out.println("endPath = " + endPath);
//上传文件
multipartFile.transferTo(new File(endPath));
}
return "success";
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}
/**
* 多包处理图片 工具类
* @param request
* @return
*/
@RequestMapping(value = "/uploadManyPageUtil.action",produces =
"application/json;charset=utf-8")
@ResponseBody
public Map<String,Object> uploadManyPageUtil(MultipartRequest request){
return FileUploadUtil.fileUploadUtil(request,"fileMany","E:\\images\\");
}
}
房屋发布前台页面(发布出租房)
<FORM id=add_action method=post name=add.action
action="addHouse" enctype="multipart/form-data">
<%--multipart/form-data 大文件传输表单设置--%>
<DIV class=infos>
<TABLE class=field>
<TBODY>
<%--<TR>--%>
<%--<TD class=field>用户id</TD>--%>
<%--<TD><INPUT id=userID class=text type=text name=id value="${user.id}"> </TD></TR>--%>
<%--<TR>--%>
<TR>
<TD class=field>标 题:</TD>
<TD><INPUT id=add_action_title class=text type=text name=title> </TD></TR>
<TR>
<TD class=field>户 型:</TD>
<TD><SELECT class=text name=typeId>
<c:forEach items="${types}" var="t">
<OPTION value=${t.id}>${t.name}</OPTION>
</c:forEach>
</SELECT></TD></TR>
<TR>
<TD class=field>面 积:</TD>
<TD><INPUT id=add_action_floorage class=text type=text
name=floorage></TD></TR>
<TR>
<TD class=field>价 格:</TD>
<TD><INPUT id=add_action_price class=text type=text name=price> </TD></TR>
<TR>
<TD class=field>房产证日期:</TD>
<TD><INPUT class=text type=date name=pubdate></TD></TR>
<TR>
<TD class=field>位 置:</TD>
<TD>区:<SELECT class=text name=district_id id="district">
<c:forEach items="${districts}" var="d">
<OPTION value=${d.id}>${d.name}</OPTION>
</c:forEach>
</SELECT> 街:<SELECT class=text
name=streetId id="street"><OPTION selected value=1001>中关村大街</OPTION></SELECT> </TD></TR>
<TR>
<TD class=field>联系方式:</TD>
<TD><INPUT id=add_action_contact class=text type=text name=contact> </TD></TR>
<TR>
<TR>
<TD class=field>图片上传:</TD>
<TD><INPUT id=add1_action_contact class=text type=file name=pfile> </TD></TR>
<TR>
<TD class=field>详细信息:</TD>
<TD><TEXTAREA name=description></TEXTAREA></TD></TR></TBODY></TABLE>
<DIV class=buttons><INPUT value=立即发布 type=submit>
</DIV></DIV></FORM>
控制器代码部分
@RequestMapping("addHouse")
public String addUser(House house, HttpSession session, @RequestParam(value = "pfile",required = false) MultipartFile file) throws IOException {
//将文件保存在服务器中 G:\\images
// 获取文件名 例如: xxx.jpg
String fname = file.getOriginalFilename();
// 截取文件类型 .jpg
String expName = fname.substring(fname.lastIndexOf("."));
String uuid= UUID.randomUUID().toString();
String afterPath=new SimpleDateFormat("yyyy\\MM\\dd\\HH\\mm\\ss").format(new Date());
// 以年月日为文件隔离,uuid为文件名称
// 最终保存路径
String saveName=afterPath+"\\"+uuid+expName;
System.out.println("saveName = " + saveName);
File fineFile=new File("G:\\images\\",afterPath);
//判断文件夹是否存在,不存的话新建文件夹
if (!fineFile.exists()){
fineFile.mkdirs();
}
// 保存
file.transferTo(new File("G:\\images\\",saveName));
//保存数据库的记录 house已经接收部分表单数据
//保存数据库的记录 house已经接收部分表单数据
//设置编号
house.setId(System.currentTimeMillis()+"");
// 设置文件审核状态
house.setIspass(0);
house.setIsdel(0);
// 保存文件路径
house.setPath(saveName);
//调用服务层保存方法
int r = houseService.addHouse(house);
if(r==1){
return "guanli";
}else {
fineFile.delete();
return "error";
}
}