基于Struts2框架的文件上传

这篇博客来实现一个基于Struts2框架的文件上传。首先说到基于Struts2的文件上传,我的脑子里立马浮现出基于Struts2框架上传文件的一个注意事项:

(1)在UI页面的form表单中form标签的中一定要加

enctype="multipart/form-data" ;

(2)在UI页面的form表单中一个要有一个input标签,type为file,一定要注意这个name属性的值

<input type="file" name="upload">

(3)在Action中一定要声明3个属性,upload,uploadFileName,uploadContentType并实现set方法属性注入

private File upload;
private String uploadFileName;
private String uploadContentType;
//setter方法

(4)在struts.xml配置文件中可以对上传的文件做一些限制,比如上传文件的大小,上传文件的类型,上传文件的可扩展类型

(5)ContentType说明:它是一个类型设置


上面说完了注意事项,下面我来说说我的实现文件上传的一些具体做法(这是我在自己的CRM项目中摘出来的代码),文件的上传我会借助tomcat服务器,将文件放在tomcat服务器下的tomcat\apache-tomcat-7.0.53\webapps\pic目录下;将文件的路径放在mysql服务器中;文件的名字会利用uuid进行处理使其全局唯一。

(1)前台UI页面

<form id=form1 name=form1 action="${pageContext.request.contextPath}/customer_save.action"
	method="post" enctype="multipart/form-data">
	<tr>
		<td>文件上传 :</td>
		<td>
			<input type="file" id=sChannel2 style="WIDTH: 180px" maxLength=50 name="upload"/>
		</td>
	</tr>
</form>

(2)Action代码(增删改)

/**
 * 保存客户之上传附件功能
 */
private File upload;//表示要上传的文件
private String uploadFileName;//表示要上传文件的名称
private String uploadContentType;//表示上传文件的类型为MIME类型
public void setUpload(File upload) {
	this.upload = upload;
}
public void setUploadFileName(String uploadFileName) {
	this.uploadFileName = uploadFileName;
}
public void setUploadContentType(String uploadContentType) {
	this.uploadContentType = uploadContentType;
}
/**
 * 保存客户功能
 */
public String save(){
	
	//判断客户是否要上传文件
	if(uploadFileName != null){
		try {
			//处理文件名,使其全局唯一
			String uuidName = UploadUtils.getUUIDName(uploadFileName);
			//声明保存的路径
			String filePath = "D:\\program\\eclipse_kepler_project\\tomcat\\apache-tomcat-7.0.53\\webapps\\upload\\";
			//创建File对象
			File file = new File(filePath + uuidName);
			//简单方式
			FileUtils.copyFile(upload, file);
			customer.setCust_file_path(filePath+uuidName);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	customerService.save(customer);
	return "save";
}
/**
 * 编辑保存客户
 * @throws IOException 
 */
public String update() throws IOException{
	//判断是否修改了文件,如果修改了,原来没有文件直接保存,否则删除原来文件再保存,没有修改可以直接忽略它
	if(uploadFileName!=null){
		//先删除旧的照片
		String oldFile = customer.getCust_file_path();
		if(oldFile!=null && !oldFile.trim().isEmpty()){
			File file = new File(oldFile);
			file.delete();
		}
		//上传新的图片
		String uuidName = UploadUtils.getUUIDName(uploadFileName);
		String filePath = "D:\\program\\eclipse_kepler_project\\tomcat\\apache-tomcat-7.0.53\\webapps\\upload\\";
		File file = new File(filePath + uuidName);
		FileUtils.copyFile(upload, file);
		customer.setCust_file_path(filePath + uuidName);
	}
	customerService.update(customer);
	return "update";
}

/**
 * 根据id删除客户
 * @return
 */
public String delete(){
	Customer customer2 = customerService.findCustomerById(customer.getCust_id());
	String filePath = customer2.getCust_file_path();
	customerService.delete(customer2);
	File file = new File(filePath);
	if(file.exists()){
		file.delete();
	}
	return "delete";
}

(3)struts.xml文件的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<!-- 全局设置文件上传总大小  struts.multipart.maxSize=2097152-->
	<constant name="struts.multipart.maxSize" value="20971520"/>
	<package name="crm_ssh01" extends="struts-default" namespace="/">
		<!-- 客户模板,通配符的方式,action交由spring来管理 -->
		<action name="customer_*" class="customerAction" method="{1}">
			<result name="initAddUI">/jsp/customer/add.jsp</result>
			<result name="page">/jsp/customer/list.jsp</result>
			<result name="save" type="redirectAction">customer_findByPage.action</result>
			<result name="initUpdate">/jsp/customer/edit.jsp</result>
			<result name="update" type="redirectAction">customer_findByPage.action</result>
			<result name="delete" type="redirectAction">customer_findByPage.action</result>
			<!-- 允许文件上传的大小 -->
			<param name="fileUpload.maximumSize">20971520</param>
			<!-- 允许文件上传的类型 -->
			<param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param>
			<!-- 决定文件上传的类型 -->
			<param name="fileUpload.allowedExtensions">.jpg,.txt,.png</param>
		</action>
	</package>
<struts>

这就是基于struts2框架的文件上传的一些代码片段功能。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值