在
项目开发过程中,经常会有人问道emp怎么来实现文件上传,这里我做一个简单的介绍:
emp文件上传的 设计思想是:所有的文件上传都由平台进行处理,平台将上传的文件统一放在一个临时的文件夹下,然后再由开发人员根据具体的 业务需求对上传的文件进行处理,例如:导入数据库、把文件转移到具体 业务所需要的文件夹下或者是处理结束后删除文件等等。
根据这个设计思路,emp的文件上传功能是独立于业务逻辑和表现逻辑的,是属于Servlet层次的功能模块,其配置的地方是在公共表现逻辑中(即empServletContext.xml文件),配置的例子如下:
<empServletContext.xml>
......
<sessionManager class="com.ecc.emp.session. EMPSessionManager"/>
<localeResolver class="com.ecc.emp.web.servlet.CookieLocaleResolver"/>
<multiPartResolver class="com.ecc.emp.web.multipart.implement.EMPMultipartResolver"/>
......
</empServletContext.xml>
其中有几个主要的属性:
tempFileRootPath:文件临时存在的位置
maxFileSize:允许上传的文件大小
seperateViaDate:文件是否按照日期存放
dateDirFormat:按照日期存放的情况下,日期的格式
上面配置的是文件上传的公共配置,对于具体需要进行文件上传的地方,需要做的处理有:
1、JSP页面中,需要设置表单的类型是文件上传类型(即enctype="multipart/form-data")以及一个类型为file的输入框。
<form name="form" enctype="multipart/form-data" action="fileUpLoad.do" method=" POST">
<input name="myFileInputName" type="file"/>
</form>
2、表现构件则与普通的表现构件一样的配置即可
3、业务逻辑中,则需要在输入中添加类型为file的输入框的名称(即上面例子中的myFileInputName)。然后在业务逻辑中针对myFileInputName这一数据定义进行处理。该数据定义的值是一个com.ecc.emp.web.multipart.implement.EMPMultipartFile对象,该对象中的tempFileName属性就是临时文件的“完整路径+文件名”,根据该属性的值就可以对临时文件进行相关的业务处理
emp文件上传的 设计思想是:所有的文件上传都由平台进行处理,平台将上传的文件统一放在一个临时的文件夹下,然后再由开发人员根据具体的 业务需求对上传的文件进行处理,例如:导入数据库、把文件转移到具体 业务所需要的文件夹下或者是处理结束后删除文件等等。
根据这个设计思路,emp的文件上传功能是独立于业务逻辑和表现逻辑的,是属于Servlet层次的功能模块,其配置的地方是在公共表现逻辑中(即empServletContext.xml文件),配置的例子如下:
<empServletContext.xml>
......
<sessionManager class="com.ecc.emp.session. EMPSessionManager"/>
<localeResolver class="com.ecc.emp.web.servlet.CookieLocaleResolver"/>
<multiPartResolver class="com.ecc.emp.web.multipart.implement.EMPMultipartResolver"/>
......
</empServletContext.xml>
其中有几个主要的属性:
tempFileRootPath:文件临时存在的位置
maxFileSize:允许上传的文件大小
seperateViaDate:文件是否按照日期存放
dateDirFormat:按照日期存放的情况下,日期的格式
上面配置的是文件上传的公共配置,对于具体需要进行文件上传的地方,需要做的处理有:
1、JSP页面中,需要设置表单的类型是文件上传类型(即enctype="multipart/form-data")以及一个类型为file的输入框。
<form name="form" enctype="multipart/form-data" action="fileUpLoad.do" method=" POST">
<input name="myFileInputName" type="file"/>
</form>
2、表现构件则与普通的表现构件一样的配置即可
3、业务逻辑中,则需要在输入中添加类型为file的输入框的名称(即上面例子中的myFileInputName)。然后在业务逻辑中针对myFileInputName这一数据定义进行处理。该数据定义的值是一个com.ecc.emp.web.multipart.implement.EMPMultipartFile对象,该对象中的tempFileName属性就是临时文件的“完整路径+文件名”,根据该属性的值就可以对临时文件进行相关的业务处理
除了可以使用emp的文件上传实现类(EMPMultipartResolver)之后,还可以配置成使用apache的文件上传功能的实现类(com.ecc.emp.web.multipart.commons.CommonsMultipartResolver),其属性的配置与EMPMultipartResolver是一样的。
<empServletContext.xml>
......
<sessionManager class="com.ecc.emp.session.EMPSessionManager"/>
<localeResolver class="com.ecc.emp.web.servlet.CookieLocaleResolver"/>
<multiPartResolver class="com.ecc.emp.web.multipart.commons.CommonsMultipartResolver"/>
......
</empServletContext.xml>
另外,与使用emp的文件上传的实现类不同的是:在业务逻辑中取得的myInputFileName数据定义的值是一个com.ecc.emp.web.multipart.commons.CommonsMultipartFile对象,在该对象中可以取到org.apache.commons.fileupload.FileItem对象,然后根据FileItem对象就可以对临时文件进行相关的业务处理。
由于这种方式用到了apache的文件上传功能,相关的介绍可以查看apache的官网:
http://commons.apache.org/fileupload/
或者由某位达人可以介绍一下。
<empServletContext.xml>
......
<sessionManager class="com.ecc.emp.session.EMPSessionManager"/>
<localeResolver class="com.ecc.emp.web.servlet.CookieLocaleResolver"/>
<multiPartResolver class="com.ecc.emp.web.multipart.commons.CommonsMultipartResolver"/>
......
</empServletContext.xml>
另外,与使用emp的文件上传的实现类不同的是:在业务逻辑中取得的myInputFileName数据定义的值是一个com.ecc.emp.web.multipart.commons.CommonsMultipartFile对象,在该对象中可以取到org.apache.commons.fileupload.FileItem对象,然后根据FileItem对象就可以对临时文件进行相关的业务处理。
由于这种方式用到了apache的文件上传功能,相关的介绍可以查看apache的官网:
http://commons.apache.org/fileupload/
或者由某位达人可以介绍一下。