文件上传—SSM框架文件上传

时间:2023-03-09 07:28:32
文件上传—SSM框架文件上传
1、准备上传下载的api组件

<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
2、编写前台上传表单

<form action="index/newadd" method="post" enctype="multipart/form-data">
<table class="form">
<tr>
<td class="field">证件照:</td>
<td><input type="file" id="wkpicpath" class="text" name="attachs" /> </td>
<td class="field"id="hderrorinfo" style="margin-left:0px">${sessionScope.uploadwkError}</td>
</tr>
<tr>
<td class="field">头像:</td>
<td><input type="file" id="hdpicpath" class="text" name="attachs" /></td>
<td class="field"id="hderrorinfo" style="margin-left:0px">${sessionScope.uploadhdError}</td>
</tr>
<tr>
<td></td>
<td><label class="ui-blue"><input type="submit" name="submit" value="添加" /></label></td>
</tr>
</table>
</form>
3、编写controller层(多文件上传)

 /*
* 管理员新增用户
*/
@RequestMapping(value="/newadd",method=RequestMethod.POST)
public String doAddUser(HttpSession session,HttpServletRequest request,
@RequestParam(value="attachs",required=false)MultipartFile[] attachs,
User user){ //定义两个上传文件的路径
String wkpicpath = null;
String hdpicpath = null;
String errorinfo = null;
//定义上传过程管理标记
boolean flag = true;
//定义文件保存的位置
String path = request.getSession().getServletContext().getRealPath("statics"+File.separator+"uploadfiles");
//循环读取文件信息
for(int i=0;i<attachs.length;i++){
MultipartFile attach = attachs[i];
//判断文件是否为空
if(!attach.isEmpty()){
//判断是第几个文件
if(i==0){
errorinfo = "uploadwkError";
}else if(i==1){
errorinfo = "uploadhdError";
}
//获取源文件名
String oldName= attach.getOriginalFilename();
//获取源文件名后缀
String prefixName = FilenameUtils.getExtension(oldName); int fileSize = 500000;
//判断上传大小不得超过500K
if(attach.getSize()>fileSize){
session.setAttribute(errorinfo, "上传文件不得大于500k");
flag = false;
}else if(prefixName.equalsIgnoreCase("jpg")
|| prefixName.equalsIgnoreCase("png")
|| prefixName.equalsIgnoreCase("jpeg")
|| prefixName.equalsIgnoreCase("pneg")){
//判断上传格式
//定义新的文件名,当前系统时间+随机数+固定后缀,
//RandomUtils需要引入jar文件commons-lang.jar
//String fileName = System.currentTimeMillis()+RandomUtils.nextInt(1000000)+"personer.jpg";
String fileName = System.currentTimeMillis()+"personer.jpg";
//创建新的文件,用于接收用户上传的文件流
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
} //将上传的文件保存
try {
attach.transferTo(targetFile);
} catch (Exception e) {
e.printStackTrace();
session.setAttribute(errorinfo,"上传失败!");
flag = false;
} //更新上传的路径
if(i==0){
wkpicpath = path + File.separator + fileName;
}else if(i==1){
hdpicpath = path + File.separator + fileName;
}
}else{
session.setAttribute(errorinfo,"图片格式不正确!");
flag = false;
}
}
} //准备User
if(flag){
user.setWkpicpath(wkpicpath);
user.setHdpicpath(hdpicpath);
user.setUserrole(1);
//插入数据库
if(userService.findAddUser(user)>0){
return "redirect:/index/user";
}
}
return "manager/user-add.jsp";
}