附件上传之单文件上传(一)

本章描述:

上传文件是很多Web程序都具有的功能,

利用平台提供的默认变量命名规则的上传附件的方法,上传图片并实行前后台检测的方式检测上传图片的类型、大小。

可配置条件:

1、附件上传后保存的文件名称按原文件名命名(可关注步骤二action的写法

2、附件文件上传路径(FileUploadSupport中新增常量)

/**                                                                                                                                                                       

 * 时间戳形式保存文件默认上传附件类型                                                                                   

  *  推荐使用默认时间戳方式,解决linux系统下汉字栏目的问题                                                     

 */                                                                                                                                                                       

public static final int FILE_ADAPTER_TIMESTAMP=1;                                                                  

/**                                                                                                                                                                        

 * 原文件名                                                                                                                                                        

 */                                                                                                                                                                         

public static final int FILE_ADAPTER_CONSTANT=0;                                                                     

/**                                                                                                                                                                         

 * 原文件名+时间戳形式                                                                                                                               

 */                                                                                                                                                                         

public static final int FILE_ADAPTER_CONSTANT_TIMESTAMP=2;                                                

/**                                                                                                                                                                          

 * 原文件英文保持原有,汉字变成拼音形式_时间戳                                                                           

 */                                                                                                                                                                          

public static final int FILE_ADAPTER_PINYIN_TIMESTAMP=3;  

 

 

效果截图

 

步骤1:导入平台所需JAR

 

以上依赖包wafstruts2-201103.jar由太极公司产品部门提供其他皆由struts2本身提供。

 

步骤2:类文件(action

 

 操作1:更改继承方法

替换前代码如下,注意红色字体标注的部分

import com.taiji.waf.struts2.WafSupport;

public class ****Action extends WafSupport{

…...

}

替换后代码如下

import com.taiji.waf.struts2.FileUploadSupport;

public class ExampleUploadFileAction extends FileUploadSupport{

……

}

 

 操作2:关于上传附件路径的写法

 

第一种方式(平台默认的物理路径)

在相应的插入、更新方法中加入如下代码

String fileName="";//默认返回上传后附件的文件名称

if(this.getUploadFileName()!=null){//判断当前上传文件是否为空

fileName=this.insertUploadFile();//调用平台提供的默认的上传方法

}

 

第二种方式(开发者自定义上传路径)

1、定义上传路径

private static final String DIR = WAFConfigure.getProperty("UploadFile_Path");

2、调用指定路径上传附件方法

String fileName="";//默认返回上传后附件的文件名称

if(this.getUploadFileName()!=null){//判断当前上传文件是否为空

fileName=this.insertUploadFile(DIR);//调用平台提供的默认的上传方法

}

 

操作3:定义上传文件名称规则;

 

   平台默认的FileUploadSupport类新增4中上传文件名称存储方式如下,为空时按时间戳形式存储

/**                                                                                                                                                                       

 * 时间戳形式保存文件默认上传附件类型                                                                                   

  *  推荐使用默认时间戳方式,解决linux系统下汉字栏目的问题                                                     

 */                                                                                                                                                                       

public static final int FILE_ADAPTER_TIMESTAMP=1;                                                                  

/**                                                                                                                                                                        

 * 原文件名                                                                                                                                                        

 */                                                                                                                                                                         

public static final int FILE_ADAPTER_CONSTANT=0;                                                                     

/**                                                                                                                                                                         

 * 原文件名+时间戳形式                                                                                                                               

 */                                                                                                                                                                         

public static final int FILE_ADAPTER_CONSTANT_TIMESTAMP=2;                                                

/**                                                                                                                                                                          

 * 原文件英文保持原有,汉字变成拼音形式_时间戳                                                                           

 */                                                                                                                                                                          

public static final int FILE_ADAPTER_PINYIN_TIMESTAMP=3;                                                     

 

 

 

步骤3JSP页面

操作1:修改表单提交配置

修改前:

<form name="***Form" method="post"                                                                                                       

action="***.action" onSubmit="return false;">                                                                               

修改后:

<form name="***Form" method="post"                                                                                                         

action="***.action" enctype="multipart/form-data"                                                                       

onSubmit="return false;">                                                                                                                            

操作2:上传附件框的写法:

<s:file name="upload" id="upload" cssClass="inputTextFile" onkeypress="return           false;"/>                                                                                                                                                                 

<span class="noticeWord">&nbsp;&nbsp;请选择bmp,jpg,gif,png类型的图片作为照片且不允许为空</span>  

其中cssClassStruts2调用样式名称的方法, onkeypress="return false;"让附件上传的输入框为只读形式避免手动输入造成的BUG

 

步骤4:增加JSP页面验证

 

操作1:添加平台提供的公用验证文件

 

         <script src="js/common.js"></script>

 

操作2:验证附件大小、图片类型

 

<script type='text/javascript'>                                            

//验证图片类型、大小                                                                    

  function verificationImg(obj)                                            

 {                                                                                                            

  var d=new UpLoadFileCheck();                                              

  d.IsImg=true;  //是否验证图片类型                                      

  d.AllowImgFileSize=20;//图片的大小,单位为KB           

  d.CheckExt(obj)                                                                           

 }                                                                                                            

</script>                                                                                            

 

操作3:输入框加入验证方法

<s:file name="upload" id="upload" cssClass="inputTextFile"                                                     

onchange="verificationImg(this)" onkeypress="return false;"></s:file>                             

 

之前在JSP验证上我们填写的附件上传框加入onchange="verificationImg(this)" 为我们的上传附件的表单加入了当选中图片后验证的方法。如果想修改验证事件的触发事件或方式直接更改即可。

 

步骤5STRUTS2-XML添加验证规则

<action name="insertExampleUploadFile "                                                                                               

class="com.taiji.waf.example.uploadfile.action.ExampleUploadFileAction"                        

method="insertExampleUploadFile">                                                                                                            

<interceptor-ref name="defaultStack">                                                                                                   

<param name="contentType">                                                                                                                           

image/gif,image/jpeg  <!---验证上传附件类型->                                                                                                                                    

</param>                                                                                                                                                                   

<param name="maximumSize">50000000</param>   <!---验证上传附件大小->                                                                              

</interceptor-ref>                                                                                                                                             

<result name="input">                                                                                                                                      

                    ****/errorFi le.jsp    <!---不符合验证规则时,默认调转的页面,开发人员可自行更改-->                                                                                                                                              

</result>                                                                                                                                                                

<result name="error">error.jsp</result>                                                                                             

<result name="success">success.jsp</result>                                                                                     

</action>    

猜你喜欢

转载自chixue1016.iteye.com/blog/1682030