Struts_upload.xml 配置如下:
<interceptor-ref name ="fileUpload"> <param name="maximumSize">20971520</param> </interceptor-ref> <result name="input">/WEB-INF/pages/tooLargeError.jsp</result>
注:文件大小最大设置为20971520b=20M。设置result name="input"返回到提示页面是因为上传文件过大时,Struts2返回的是input。
提示页面如下:
<%@ page language="java" contentType="text/html;charset=UTF-8"%> <jsp:directive.page import="java.io.PrintWriter;" /> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>上传文件过大</title> <link href="<%=request.getContextPath() %>/css/main.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> function countDown(tick) { if (tick == 0) { window.history.go(-1); return; } var time = "Transfer in "; var minute = Math.floor(tick / 60); if (minute < 10) { time += "0"; } time += minute + ":"; var second = tick % 60; if (second < 10) { time += "0"; } time += second; --tick; var command = "countDown(" + tick + ")"; window.setTimeout(command, 100); } </script> </head> <body class="rightbg" onload="window.setTimeout('countDown(12)',10);" > <div class="rightBox"> <div class="title"><span class="floatLeft"><strong>操作提示</strong></span><span class="floatRight"> </span></div> <div class="add"> <table width="90%" height="440px" border="0" cellpadding="0" cellspacing="10" style="margin-left:80px;"> <tr> <td width="30%" align="right" valign="middle"><span><img src="<%=request.getContextPath() %>/images/Error.png" width="35" height="35" /></span></td> <td width="70%" align="left" valign="middle" class="color1422"> <font style="font-size:14px;">上传的apk文件不能大于20M,请重新上传!正在返回,请稍后...</font> </td> </tr> </table> <p> </p> </div> </div> </body> </html>
PS:
token不一致时会出现如下waring
2013-05-21 08:51:23 WARN [Class:org.apache.struts2.util.TokenHelper] ====Form token 1N93VYB3H5Q8XN0SQ53YDAMU62HLEPS4 does not match the session token 9RPUL80JP02IXCP2YXMQLBRXW9YU4STU.
而且页面可能会报错。
此时建议在struts.xml中增加如下配置:
<!-- token不一致 --> <result name="invalid.token">/WEB-INF/pages/tokenError.jsp</result>
可以在tokenError.jsp中提示token不一致之类的信息于用户,这样更能体现用户友好性。
至于设置result name="invalid.token"返回到提示页面是因为token不一致时,Struts2返回的是invalid.token。