`
lovehui0228
  • 浏览: 100367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2验证框架验证文件后缀名

阅读更多

做好了文件上传,当然也要做下对上传文件的校验了,我也不太清楚struts2有没有现成的验证文件后缀的方法,然后就自己写了一个,也蛮简单的~~~

 

在struts.xml同级目录下的validators.xml中加上一行配置文件

 

     <validator name="postfixcheck" class="com.validators.PostfixCheck"/>

 

然后看PostfixCheck类代码

 

package com.validators;

import com.opensymphony.xwork2.validator.ValidationException;
import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport;

public class PostfixCheck extends FieldValidatorSupport{
	
	String validPostfix;

	public String getValidPostfix() {
		return validPostfix;
	}

	public void setValidPostfix(String validPostfix) {
		this.validPostfix = validPostfix;
	}

	public void validate(Object object) throws ValidationException {	
		
		String fieldName = getFieldName();
		String fileName = (String)this.getFieldValue(fieldName, object);
		
		System.out.println(fileName);
		String postfix = getExtention(fileName); 
		boolean valid = checkValid(validPostfix, postfix);
		
		if(valid != true)
		{
			addFieldError(fieldName, object);
		}
    }
	
	private static String getExtention(String fileName)  
    {
    	 int pos = fileName.lastIndexOf(".");
    	 return fileName.substring(pos + 1);
    } 
	
	private static boolean checkValid(String validPostfix, String post)
	{
		boolean valid = false;
		
		for(int i = 0, j = 0, k = 0;i < validPostfix.length();i ++)
		{	
			if(validPostfix.charAt(k) != ',' && k != validPostfix.length() - 1)
			{
				k++;
			}
			else
			{
				String postfix;
				if(k == validPostfix.length() - 1)
				{
					postfix = validPostfix.substring(j, k + 1);
				}
				else
				{
					postfix = validPostfix.substring(j, k);
				}
				if(postfix.equals(post))
				{
					valid = true;
					break;
				}
				else
				{
					j = k;
					j ++;
					k ++;
				}
			}
		}
		return valid;
	}
	
	public static void main(String[] args)
	{
		System.out.println(checkValid("jpg,gif,jpfg,jpeg", "exe"));
	}
}

 

 

最后当然是添加相应的验证文件了,依然是 Action名-validation.xml的格式

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
	"-//OpenSymphonyGroup//XWorkValidator1.0.2//EN" 
	"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

	<validators>
    	
    	<field name="fileName">
        	<field-validator type="postfixcheck">
        		<param name="validPostfix">wma,mp3</param>
            	<message>文件格式错误</message>
        	</field-validator>
    	</field>

	</validators>      

 

就这么简单,应该蛮好懂的~~~

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics