SpringMVC(24):使用springmvc+spring+jdbc 优化订单管理系统的示例(多文件上传功能的实现)
程序员文章站
2022-07-11 11:39:51
...
2018年1月28日
功能:利用Springmvc 实现单文件上传;使用了MultipartResolver接口,入参为MultipartFile数组,区别《SpringMVC(23):使用springmvc+spring+jdbc
优化订单管理系统的示例(单文件上传功能的实现)》;
【1】项目jar包与文件框架
图1
图2
【2】View层,在useradd.jsp添加了以下代码:
<br>
<h5>以下为上传-多文件测试</h5>
<form action="${pageContext.request.contextPath }/user/uploadb" method="post" enctype="multipart/form-data">
<div>
<input type="hidden" id="errorinfo" value="${uploadFileError}">
文件1:<input type="file" name="uploadFile"/><br/><br/>
</div>
<div>
<input type="hidden" id="errorinfo" value="${uploadFileError}">
文件2:<input type="file" name="uploadFile"/><br/><br/>
</div>
<input type="submit" value="上传"/>
</form>
注意之处:1、springmvc处理多文件上传,增加file标签即可,但需要注意上传文件的组件名(file的name属性)要一致,这样才能以数组的形式传递给控制器的处理方法。
显示效果:
图3
注意之处:1、文件名要全英文,中文可能会在传输乱码或者报错!
2、文件路径要全英文,中文可能会在传输乱码或者报错!
<!-- 配置MultipartResolver -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
注意之处:1、这里设置了请求的编码格式,设置为UTF-8,要和JSP的pageEncoding设置一样,才能便于读取;2、maxUploadSize,上传文件的大小上限,单位是字节(Byte);
【4】Controller控制器,主要是对文件上传确定后的一些后台处理(文件名称、大小、格式是否合格),因此,只需要在UserController.java文件添加处理方法:
@RequestMapping(value="/uploadb",method=RequestMethod.POST)
public String test2(User user,HttpSession session,
HttpServletRequest request,
@RequestParam(value="uploadFile",required=false)MultipartFile[] uploadFiles) throws SQLException{
String errorInfo = null;
String idPicPath = null;
String workPicPath = null;
boolean flag = true;
//获取保存文件的绝对路径
String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfiles");
System.out.println("2.1 uploadFile path ===>"+path);
for(int i=0;i<uploadFiles.length;i++){
MultipartFile uploadFile = uploadFiles[i];
if(!uploadFile.isEmpty()){
if(i==0){
errorInfo = "uploadFileError!";
}else if(i==1){
errorInfo = "uploadWpError!";
}
String oldFileName = uploadFile.getOriginalFilename();
String prefix = FilenameUtils.getExtension(oldFileName);
int filesize = 500000;
if(uploadFile.getSize() > filesize){
request.setAttribute("uploadFileError", "* 上传大小不得超过5000KB");
System.out.println("* 上传大小不得超过5000KB");
return "useradd";
}else if(prefix.equalsIgnoreCase("jpg")
|| prefix.equalsIgnoreCase("png")
|| prefix.equalsIgnoreCase("jpeg")
|| prefix.equalsIgnoreCase("pneg")){
//上传格式正确,重命名文件
String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"_Personal.jpg";
System.out.println("2.2 new fileName===>"+uploadFile.getName());
//新建这么一个文件,FILE API
File targetFile = new File(path,fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//保存
try{
//上传
uploadFile.transferTo(targetFile);
}catch (Exception e){
e.printStackTrace();
request.setAttribute("uploadFileError", "* 上传失败! ");
System.out.println("* 上传失败! ");
return "useradd";
}
if(i==0){
idPicPath = path+File.separator+fileName;
log.info("2.3 idPicPath==>"+idPicPath);
}else if(i==1){
workPicPath = path+File.separator+fileName;
log.info("2.4 workPicPath==>"+workPicPath);
}
}else{
request.setAttribute("uploadFileError", "* 上传格式错误!");
System.out.println("* 上传格式错误!");
return "useradd";
}
}
}
if(flag){
return "redirect:/user/userlist";
// user.setCreatedBy(((User)session.getAttribute("user")).getId());
//// user.setCreationDate(new Date());
// user.setIdPicPath(idPicPath);
// user.setWorkPicPath(workPicPath);
// if(userService.add(user)){
// System.out.println("2.5 success.");
// return "redirect:/user/userlist";
// }
}
return "useradd";
}
【5】运行结果:
打印日志:
2.1 uploadFile path ===>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfiles
2.2 new fileName===>uploadFile
18/02/02 16:31:45 INFO Controller.UserController: 2.3 idPicPath==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfiles\1517561127316_Personal.jpg
2.2 new fileName===>uploadFile
18/02/02 16:31:45 INFO Controller.UserController: 2.4 workPicPath==>D:\java_ee_eclipse\mmb_workplace\.metadata\.plugins\org.eclipse.wst.server.core\tmp4\wtpwebapps\springmvc5\statics\uploadfiles\1517560634935_Personal.jpg
图4
上一篇: 使用zabbix3.2监控apache
下一篇: 从matlab生成的fig图片中读取数据