Strutsのファイルアップロードで制限を超えた場合の判定
2009年 3月 19日 19:07Strutsのファイルアップロード<html:file>で制限を超えたことを判定する方法のメモです。
Strutsのファイルアップロード制限はstruts-config.xmlに以下のように記述して行います。
<controller
maxFileSize="1024K"
processorClass="org.apache.struts.acrion.RequestProcessor" />
この制限(上記の場合は1M)を超えた場合、requestにMultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDEDをキーとしたBooleanオブジェクトがtrueで設定されるので、その内容を見て判定します。
具体的には、
Boolean exceeded = (Boolean)request.getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
if(exceeded == null) {
System.out.println("超えていません");
} else if(exceeded.booleanValue()) {
System.out.println("超えています");
}
のような感じです。
チェック場所はActionFormのvalidateメソッドあたりがいいかもしれません。なお、ファイルアップロード制限値を超えてしまった場合、ActionFormの各プロパティには値が設定されませんので、注意が必要です。
