基于SpringMvc框架的文件上传

这篇博客实现一个基于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上传文件的一些代码片段。

猜你喜欢

转载自blog.csdn.net/u013132035/article/details/80698284