SpringMVC文件上传
## 文件上传
前言
致力于解决问题,如有不足之处,欢迎大佬指点
一、导入jar包
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
二、springMVC.xml配置
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上传文件的最大大小,单位为字节,下面设置为5M -->
<property name="maxUploadSize" value="5242880"></property>
<!-- 上传文件的编码 -->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
三、from表单
<form method="post" action="addPaper" enctype="multipart/form-data" id="form">
论文题目: <input type="text" name="title""/><span id="title">*</span><br/>
论文题目: <select name="type">
<option value="1">应用型</option>
<option value="2">理论型</option>
</select><br/>
论文摘要: <textarea name="paperSummary" ></textarea><span id="paperSummary">*</span><br/>
论文内容: <input type="file" name="file"/><span id="filePath">*</span><br/>
<input type="submit" value="保存" /><br/>
<input type="button" value="返回" onclick="history.go(-1);"/>
</form>
四、js验证
<script type="text/javascript">
$("#form").submit(function () {
//获取上传文件的路径
let filePath = $("[name='file']").val();
//获取文件上传路径后缀用来判断上传文件格式是否正确
let suffix = filePath.substr(filePath.lastIndexOf(".")+1);
if(suffix!="doc"){
if(suffix!="docx"){
$("#filePath").text("上传文件格式必须是doc docx").css("color","red");
return false;
}else{
$("#filePath").text("*").css("color","red");
}
}else{
$("#filePath").text("*").css("color","red");
}
//获取上传文件大小,单位字节(B)
1KB=1024B
1MB=1024KB
let fileSize =$("[name='file']")[0].files[0].size;
if(fileSize > 5*1024*1024){
$("#filePath").text("上传文件大小不能超过5M").css("color","red");
return false;
}else{
$("#filePath").text("*").css("color","red");
}
})
</script>
五、controller
/**
*
* @param paper 实体类
* @param file 上传的文件
* @param session 用来获取当前登录用户信息
* @return
* @throws IllegalStateException
* @throws IOException
* @RequestParam("file") file为表单上传文件域的name
*/
@RequestMapping("/addPaper")
public String addPaper(T_Paper paper, @RequestParam("file") MultipartFile file,HttpSession session)
throws IllegalStateException, IOException {
System.out.println(paper);
T_User user = (T_User) session.getAttribute("user");
// 判断文件不为空才上传文件
if (!file.isEmpty()) {
// 获取原文件名
String fileName = file.getOriginalFilename();
// 创建文件实例
File filePath = new File("E:\\paper\\", fileName);
// 如果文件目录不存在,创建目录
if (!filePath.getParentFile().exists()) {
filePath.getParentFile().mkdirs();
}
// 写入文件
file.transferTo(filePath);
paper.setPaperPath(filePath.toString());
}
paper.setCreatedBy(user.getId());
paper.setModifyBy(user.getId());
paperService.addPaper(paper);
return "redirect:getPaperInfo.html";
}
六、实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class T_Paper {
private Integer id;
private String title;
private Integer type;
private String paperSummary;
private String paperPath;
private Integer createdBy;
private Date creationDate;
private Integer modifyBy;
private Date modifyDate;
}