Java中利用struts2框架进行文件上传,还可以设置一些出错信息,比如超过了自己设置文件的最大大小、文件的类型。
第一点:设置文件的类型:
设置允许的文件类型,假设是不允许的,就报错。这个是配置在struts.xml里面,并且是作为拦截器interseptor配置。因为struts文件上传action是基于struts拦截器的。配置信息如下:
<span style="white-space:pre"> </span><interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/x-png,image/jpg,image/jpeg</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
上面第二行代码是只允许上传的文件类型为图片,当这个
interseptor拦截器调用过后还得调用默认的defaultStack。
第二点:设置允许上传文件的最大大小。
在设置这个之前,还得说明的是struts默认最大只能2M,不能超过它,改变这个在第三点介绍。
<span style="white-space:pre"> </span><interceptor-ref name="fileUpload">
<param name="maximumSize">80000</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
第二行的代码是设置上传文件的大小最大为80kb。(注意这个值不能超过2M,不然就属于大文件上传了)
第三点:Struts2 文件上传大小默认是 2M,通过<constantname="struts.multipart.maxSize"value="20000000"></constant>这个配置就可以改变了。其中中间的数字20000000代表是20M。可以自己更改。
但是通过这些配置会发现假设上传超过了设置的大小/类型的出错信息是英文的!!要想改变就得在action里面重写addActionError和addFieldError这个方法。
@Override
public void addFieldError(String fieldName, String errorMessage)
{
System.out.println("错误2");
if(errorMessage.startsWith("The file is to large to be uploaded"))
{
super.addFieldError(fieldName, "文件太大,超过了设定值!");
}
else if(errorMessage.startsWith("Content-Type not allowed"))
{
super.addFieldError(fieldName, "您上传的文件类型不允许!");
}
else
super.addFieldError(fieldName,errorMessage);
}