这篇博客实现一个基于SpringMvc框架的文件上传。说到SpringMvc的上传。和《基于Struts2框架的文件上传》一样,也有一些注意事项:
(1)在UI页面的form表单中form标签的中一定要加
enctype="multipart/form-data" ;
(2)在UI页面的form表单中一个要有一个input标签,type为file,一定要注意这个name属性的值
<input type="file" name="pictureFile"/>
(3)在controller层接收时一定要注意参数的填写
MultipartFile pictureFile
(4)在springMvc的配置文件需要对其配置
<!-- 配置文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件的最大上传为5M -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
上面说完了注意事项,下面我来说说我的实现文件上传的一些具体做法(这是我在自己的CRM项目中摘出来的代码),文件的上传我会借助tomcat服务器,在tomcat服务器上创建一个图片服务器,其内容放在本地电脑上;将文件的路径放在mysql服务器中;文件的名字会利用uuid进行处理使其全局唯一。
(1)前台UI页面
<FORM id=form1 name=form1 action="<%=basePath%>customer/save.action"
method="post" enctype="multipart/form-data">
<input type="file" style="WIDTH: 180px" maxLength=50 name="pictureFile"/>
</Form>
(2)Controller层代码
/**
* 保存用户
* @param pictureFile
* @param customer
* @return
* @throws Exception
*/
@RequestMapping("/save")
public String saveCustomer(MultipartFile pictureFile, Customer customer)throws Exception{
if(pictureFile.getSize() > 0){
//获取图片的完整名称
String fileStr = pictureFile.getOriginalFilename();
//利用uuid生成唯一的名称 + 截取图片的后缀名称 = 组成新的图片的名称
String uuidName = UploadUtils.getUUIDName(fileStr);
//声明保存的路径
String path = "F:\\picture\\crm_ssm01\\";
//将图片保存到硬盘
pictureFile.transferTo(new File(path + uuidName));
//将图片的路径保存到数据库
customer.setCust_pic(path + uuidName);
}
//保存客户
customerService.saveCustomer(customer);
return "success";
}
/**
* 更新修改客户信息
* @param customer
* @return
* @throws
* @throws Exception
*/
@RequestMapping("/edit")
public String updateCustomer(MultipartFile pictureFile,Customer customer) throws Exception{
//先判断是否有老照片,有如果还要修改的话,就删除老照片,增加新照片
if(pictureFile.getSize() > 0){
String cust_pic = customer.getCust_pic();
File file = new File(cust_pic);
if(file.exists()){
file.delete();
}
//获取原始图片完整名字
String filename = pictureFile.getOriginalFilename();
//利用uuid生成唯一的名称 + 截取图片的后缀名称 = 组成新的图片的名称
String uuidName = UploadUtils.getUUIDName(filename);
//声明保存路径
String path = "F:\\picture\\crm_ssm01\\";
//将图片保存到硬盘
pictureFile.transferTo(new File(path + uuidName));
//将图片的路径保存到数据库
customer.setCust_pic(path + uuidName);
}
customerService.updateCustomer(customer);
return "success";
}
/**
* 根据id删除客户
* @param cust_id
* @return
*/
@RequestMapping("/delete")
public String deleteCustomer(Long cust_id){
CustomerDict customerDict = customerService.findCustomerById(cust_id);
String cust_pic = customerDict.getCust_pic();
//判断是否有附件,有的话删除附件
if(cust_pic!=null){
File file = new File(cust_pic);
if(file.exists()){
file.delete();
}
}
List<Linkman> list = linkmanService.findLinkmanByLkmCustId(cust_id);
if(list.size() > 0){
return "error";
}
customerService.deleteCustomer(cust_id);
return "success";
}
(3)SpringMvc.xml配置文件
<!-- 配置文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件的最大上传为5M -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
这就是基于SpringMvc上传文件的一些代码片段。