做好了文件上传,当然也要做下对上传文件的校验了,我也不太清楚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>
就这么简单,应该蛮好懂的~~~