//Java代码:
public class MtvColumnAction extends ActionSupport implements
ServletRequestAware, ModelDriven<MtvColumn> {

public String addColumn() throws Exception {
column.setCreateTime(new Date());
String createUser = (String)request.getSession().getAttribute("logUser");
column.setCreateUser(createUser);
column.setModifyTime(new Date());
column.setModifyUser(createUser);
Integer businessId = Integer.parseInt(request
.getParameter("mtvBusinessId"));
MtvBusiness mtvBusiness = mtvBusinessService.get(businessId);
column.setMtvBusiness(mtvBusiness);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
String address = format.format(new Date())
+ "column"
+ getPicFileFileName().substring(
getPicFileFileName().lastIndexOf("."));
File imageFile = new File(ServletActionContext.getServletContext()
.getRealPath("/pic")
+ "/" + address);
column.setLogoPic("pic/" + address); boolean flag = mtvColumnService.save(column);
String result = "";
if(flag){
copy(picFile, imageFile);
result = "添加栏目信息成功!";
}
request.setAttribute("result", result);
request.setAttribute("sign", "add_column");
return "operationColumn";
}
。。
}//struts.xml配置文件:
<action name="columnInfo_*"
class="com.gzmobile.action.MtvColumnAction" method="{1}">
<param name="savePath">/pic</param>
<param name="businessName1">热榜明星面对面</param>
<param name="businessName2">精品视频火热推荐</param>
<param name="businessName3">美乐盛典</param>
            <interceptor-ref name ="fileUpload"> 
                <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,image/jpg</param> 
                <param name="maximumSize">10240000</param>
            </interceptor-ref> 
            <interceptor-ref name ="defaultStack"/> 

<result name="input">/manager/column/{1}.jsp</result>
<result name="success">/manager/column/columnList.jsp</result>
<!-- <result name="columnList">/manager/column/columnList.jsp</result> -->
<result name="operationColumn">/manager/dealwith.jsp</result>
<result name="viewBusinessColumns">/view/businessColumns.jsp</result>
</action>
<action name="typeInfo_*"
class="com.gzmobile.action.MtvTypeAction" method="{1}">
<result name="input">/manager/type/{1}.jsp</result>
<result name="success">/manager/type/typeList.jsp</result>
<result name="operationType">/manager/dealwith.jsp</result>
</action>
<action name="sourceInfo_*"
class="com.gzmobile.action.MtvSourceAction" method="{1}">
<result name="input">/manager/source/{1}.jsp</result>
<result name="success">/manager/source/sourceList.jsp</result>
<result name="operationSource">/manager/dealwith.jsp</result>
</action>
<action name="areaInfo_*"
class="com.gzmobile.action.MtvAreaAction" method="{1}">
<result name="input">/manager/area/{1}.jsp</result>
<result name="success">/manager/area/areaList.jsp</result>
<result name="operationArea">/manager/dealwith.jsp</result>
</action>
<action name="singerInfo_*"
class="com.gzmobile.action.MtvSingerAction" method="{1}">
<result name="input">/manager/singer/{1}.jsp</result>
<result name="success">/manager/singer/singerList.jsp</result>
<result name="operationSinger">/manager/dealwith.jsp</result>
</action>
<action name="resourceInfo_*"
class="com.gzmobile.action.MtvResourceAction" method="{1}">
<param name="picPath">/pic</param>
<param name="videoPath">/video</param>
<param name="businessName1">热榜明星面对面</param>
<param name="businessName2">精品视频火热推荐</param>
<param name="businessName3">美乐盛典</param>
<interceptor-ref name ="fileUpload"> 
                <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,video/quicktime,audio/mpeg,image/jpg,text/plain,application/octet-stream,video/3gpp</param> 
                <param name="maximumSize">20971520</param><!-- 20M -->
            </interceptor-ref> 
            <interceptor-ref name ="defaultStack"/> 

<result name="input">/manager/resource/{1}.jsp</result>
<result name="success">/manager/resource/resourceList.jsp</result>
<result name="operationResource">/manager/dealwith.jsp</result>
<result name="columnResources">/view/columnResources.jsp</result>
<result name="viewIndex">/view/{1}.jsp</result>
<result name="oneResource">/view/oneResource.jsp</result>
</action>//struts.properties配置,已转码
struts.ui.theme=simple
struts.i18n.encoding=utf-8
struts.action.extension=htm
struts.multipart.saveDir=d:/tmp
struts.objectFactory = spring
struts.messages.error.content.type.not.allowed=\u4e0a\u4f20\u7684\u6587\u4ef6\u7c7b\u578b\u53ea\u80fd\u662f\u56fe\u7247\u6587\u4ef6\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01
struts.messages.error.file.too.large=\u60a8\u8981\u4e0a\u4f20\u7684\u6587\u4ef6\u592a\u5927\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01
struts.messages.error.uploading=\u60a8\u8981\u4e0a\u4f20\u7684\u5185\u5bb9\u5931\u8d25\uff01
//上传的网页
 <s:form action="columnInfo_addColumn" enctype="multipart/form-data" name="uploadform">
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">栏目名称</td>
          <td width="85%" bgcolor="E4EDF9"><s:textfield name="name" cssClass="textBox" /></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">所属业务</td>
          <td width="85%" bgcolor="E4EDF9"><s:select list="#request.businessMap" listKey="key" listValue="value" name="mtvBusinessId" cssClass="textBox" /></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">LOGO图片</td>
          <td width="85%" bgcolor="E4EDF9"><s:file name="picFile" cssClass="textBox" onchange="if(checkImgType(this.value)){perImg(this.value)};" /></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">是否计费跳转</td>
          <td width="85%" bgcolor="E4EDF9"><s:radio list="{'是','否'}" value="%{'是'}" name="isCharge"></s:radio></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">是否隐藏</td>
          <td width="85%" bgcolor="E4EDF9"><s:radio list="{'是','否'}" value="%{'否'}" name="isHide"></s:radio></td>
        </tr>
        <tr>
          <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">是否首页推荐</td>
          <td width="85%" bgcolor="E4EDF9"><s:radio list="{'是','否'}" value="%{'否'}" name="isHomePageRecomand"></s:radio></td>
        </tr>
        <tr bgcolor="#FFFFFF" >
          <td colspan="2" align="center" bgcolor="#95CAFF"><s:submit value=" 添加 " cssClass="button" /></td>
        </tr> 
        </s:form>
        <tr bgcolor="#FFFFFF" >
          <td colspan="2" align="center" bgcolor="#95CAFF"><s:fielderror/></td>
        </tr>上传图片时,但大小超过2097152时,就会出现如下错误:
ERROR org.apache.struts2.interceptor.FileUploadInterceptor  - #com.opensymphony.xwork2.util.logging.commons.CommonsLogger.error(CommonsLogger.java:23)# - the request was rejected because its size (2744965) exceeds the configured maximum (2097152)
问题有如下:
1、该应用中,我上传图片时,要找的action是name="columnInfo_*",而且我配置是<param name="maximumSize">10240000</param>,为什么maximum不是10240000,而是2097152
2、假如找的action是name="resourceInfo_*",而<param name="maximumSize">20971520</param>,但为什么出错时,maximum是2097152,而不是20971520
3、当图片过大时,为什么无法在页面<td colspan="2" align="center" bgcolor="#95CAFF"><s:fielderror/></td>
上没错误信息输出,即struts.messages.error.file.too.large信息没输出。望高人指点,小弟谢先了!  

解决方案 »

  1.   

    简化问题
    //Java代码:
    public class MtvColumnAction extends ActionSupport implements
    ServletRequestAware, ModelDriven <MtvColumn> {
    ......
    public String addColumn() throws Exception {
    ......
    boolean flag = mtvColumnService.save(column);
    String result = "";
    if(flag){
    copy(picFile, imageFile);
    result = "添加栏目信息成功!";
    }
    request.setAttribute("result", result);
    request.setAttribute("sign", "add_column");
    return "operationColumn";
    }
    .....
    }//struts.xml配置文件:
    <action name="columnInfo_*"
    class="com.gzmobile.action.MtvColumnAction" method="{1}">
    <param name="savePath">/pic </param>
    <param name="businessName1">热榜明星面对面 </param>
    <param name="businessName2">精品视频火热推荐 </param>
    <param name="businessName3">美乐盛典 </param>
             <interceptor-ref name ="fileUpload">
                    <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,image/jpg </param>
                    <param name="maximumSize">10240000 </param>
                </interceptor-ref>
                <interceptor-ref name ="defaultStack"/>
    .....
    </action>
    ......
    <action name="resourceInfo_*"
    class="com.gzmobile.action.MtvResourceAction" method="{1}">
    <param name="picPath">/pic </param>
    <param name="videoPath">/video </param>
    <param name="businessName1">热榜明星面对面 </param>
    <param name="businessName2">精品视频火热推荐 </param>
    <param name="businessName3">美乐盛典 </param>
    <interceptor-ref name ="fileUpload">
                    <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,video/quicktime,audio/mpeg,image/jpg,text/plain,application/octet-stream,video/3gpp </param>
                    <param name="maximumSize">20971520 </param> <!-- 20M -->
                </interceptor-ref>
                <interceptor-ref name ="defaultStack"/>
    ......
    </action>//struts.properties配置,已转码
    struts.ui.theme=simple
    struts.i18n.encoding=utf-8
    struts.action.extension=htm
    struts.multipart.saveDir=d:/tmp
    struts.objectFactory = spring
    struts.messages.error.content.type.not.allowed=\u4e0a\u4f20\u7684\u6587\u4ef6\u7c7b\u578b\u53ea\u80fd\u662f\u56fe\u7247\u6587\u4ef6\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01
    struts.messages.error.file.too.large=\u60a8\u8981\u4e0a\u4f20\u7684\u6587\u4ef6\u592a\u5927\uff0c\u8bf7\u91cd\u65b0\u9009\u62e9\uff01
    struts.messages.error.uploading=\u60a8\u8981\u4e0a\u4f20\u7684\u5185\u5bb9\u5931\u8d25\uff01
    //上传的网页
    <s:form action="columnInfo_addColumn" enctype="multipart/form-data" name="uploadform">
           ......        <tr>
              <td width="15%" align="center" bgcolor="E4EDF9" class="normalText">LOGO图片 </td>
             ........
            <tr bgcolor="#FFFFFF" >
              <td colspan="2" align="center" bgcolor="#95CAFF"> <s:submit value=" 添加 " cssClass="button" /> </td>
            </tr>
            </s:form>
            <tr bgcolor="#FFFFFF" >
              <td colspan="2" align="center" bgcolor="#95CAFF"> <s:fielderror/> </td>
            </tr>上传图片时,如果图片大小超过2097152时,就会出现如下错误:
    ERROR org.apache.struts2.interceptor.FileUploadInterceptor  - #com.opensymphony.xwork2.util.logging.commons.CommonsLogger.error(CommonsLogger.java:23)# - the request was rejected because its size (2744965) exceeds the configured maximum (2097152)问题有如下:
    1、该应用中,我上传图片时,要找的action是name="columnInfo_*",而且我配置是 <param name="maximumSize">10240000 </param>,为什么maximum不是10240000,而是2097152
    2、假如找的action是name="resourceInfo_*",而 <param name="maximumSize">20971520 </param>,但为什么出错时,maximum是2097152,而不是20971520
    3、当图片过大时,为什么无法在页面 <td colspan="2" align="center" bgcolor="#95CAFF"> <s:fielderror/> </td>
    上没错误信息输出,即struts.messages.error.file.too.large信息没输出。望高人指点,小弟谢先了! [/Quote]
      

  2.   

    在struts.xml中加入下面语句实验下。
    <constant name="struts.multipart.maxSize" value="20000000"/>
    好像从写struts.properties也可以实现
      

  3.   

    我在网上找了很多资料,是说struts.properties也可以实现的
    在我开发的系统中,有两个应用程序要上传文件,两个应用程序要限制的大小和类型不一样,所以我就直接分开来。
    一个是:
    <action name="columnInfo_*" 
    class="com.gzmobile.action.MtvColumnAction" method="{1}"> 
              <interceptor-ref name ="fileUpload"> 
                    <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,image/jpg </param> 
                    <param name="maximumSize">10240000 </param> 
                </interceptor-ref> 
                <interceptor-ref name ="defaultStack"/> 
    另一个是:
    <action name="resourceInfo_*" 
    class="com.gzmobile.action.MtvResourceAction" method="{1}"> 
    <interceptor-ref name ="fileUpload"> 
                    <param name ="allowedTypes">image/bmp,image/png,image/gif,image/pjpeg,video/quicktime,audio/mpeg,image/jpg,text/plain,application/octet-stream,video/3gpp </param> 
                    <param name="maximumSize">20971520 </param> <!-- 20M --> 
                </interceptor-ref> 
                <interceptor-ref name ="defaultStack"/> 
    楼上的方法是在整个应用系统中,每个上传应用程序限制的大小都统一的,对吗?
      

  4.   

    我在系统中配置的<param name="maximumSize">10240000 </param>和<param name="maximumSize">20971520 </param>好像是不起作用
      

  5.   

    你的问题很简单,只要在struts.xml里写上<constant name="struts.multipart.maxSize" value="10485760" />就可以了,其中value要填一个你整个工程中允许的最大值,不论哪里只要超过这个值就会引起异常,而且不会提示文件过大。
    然后在你各自的上传ACTION配制中加入你写好的<param name="maximumSize">5242880</param>就可以了。注意:name是“struts.multipart.maxSize”而不是“struts.multipart.maxsize”
      

  6.   

    我的例子:
    <constant name="struts.multipart.maxSize" value="10485760" />
    <action name="ExcelUpload" class="com.cim.base.action.ExcelUploadAction">
                <interceptor-ref name="fileUpload"> 
                    <param name="allowedTypes">application/excel,application/vnd.ms-excel</param> 
                    <param name="maximumSize">5242880</param>
                </interceptor-ref> 
                <interceptor-ref name="defaultStack"/>    
                <param name="savePath">/uploadFiles/temp</param>
                <result name="input">jsp/flow/ExcelUpload.jsp</result>
    </action>允许5M,5M到10M之间会正常提示文件过大,超过10M报错!
      

  7.   

    <constant name="struts.multipart.maxSize" value="20000000" /> 
    struts.xml里面配置这个就可以了吧