struts上传文件大小超过配置值的问题

 最近在做Struts文件上传的过程中遇到了一些问题,具体如下:
    需求:上传文件,页面显示上传的文件列表
        注:我们用的是公共组件,上传文件后,fileid会拼起来保存到页面上,1.为了页面显示;2.fileid串要传到其他页面

 改动之前的js和html代码(部分):

//js部分
function addfile(){
  //fileids域放的是已上传的文件id串
  document.getElementById("fileids").value = fileid + ";" + document.getElementById("fileids").value;
  var fileone = document.getElementById("fileOne").value;

  if(fileone == ''){
    alert('<bean:message key="excel.null.item"/>');
    return;
  }else{
      var str=fileone.indexOf('.');
      if(str==-1){
          alter('文件格式不对!');
          return ;
      }else{
        //这里用于校验文件格式是否正确
          var profix=fileone.substring(str);
          if(profix=='.exe'){
              alert('不能上传扩展名为.exe的文件!');
              return ;
          }
      }
  }
}

//html部分
<input name="fileOne" id="fileurl" type="file" size="50" onchange="javascript:addfile()"> 

配置文件配置的可上传文件的最大值:

<controller maxFileSize="8M"/>

 实现的效果如下图1:

 

现在的情况:

A:先上传正常的文件:

B:再上传大于8M的文件,结果如下图:

原因参看文章:http://www.iteye.com/topic/113607

解决方案:在 addfile()方法中通过ajax方式先行校验文件的大小是否合适,如果不合适,alert即可,这样避免了直接提交时,造成的问题(如图2,图3) .

//js部分
function addfile(){
  document.getElementById("fileids").value = fileid + ";" + document.getElementById("fileids").value;
  var fileone = document.getElementById("fileOne").value;
  
  if(fileone == ''){
    alert('<bean:message key="excel.null.item"/>');
    return;
  }else{
      var str=fileone.indexOf('.');
      if(str==-1){
          alter('文件格式不对!');
          return ;
      }else{
          var profix=fileone.substring(str);
          if(profix=='.exe'){
              alert('不能上传扩展名为.exe的文件!');
              return ;
          }
      }
  }

  var result;
  //校验文件大小是否大于8M
  buffalo.remoteCall2("uploadfileAction.do", "checkfilesize", [fileone], function(reply){
      result =  reply.getResult();
      if(result=='false'){//大于8M时
          var obj = document.getElementById("fileurl");
          obj.outerHTML = obj.outerHTML;     
          obj.value="";
          alert("上传文件不能大于4M!");
          return ;
      }else{//小于等于8M时
          document.forms[0].submit();//提交
      }
  });
}

//html部分
<input name="fileOne" id="fileurl" type="file" size="50" onchange="javascript:addfile()"> 
原文地址:https://www.cnblogs.com/step-by-step1/p/3445540.html