• 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()"> 
  • 相关阅读:
    python自省函数getattr的用法
    python-mysqldb安装
    weblogic部署脚本
    netcat使用
    ssh批量互信脚本
    yum安装出错
    centos文件误删除恢复
    lamp php的ssl,ssh支持
    ssh免密码登陆
    python 学习笔记 四 条件, 循环以及其他
  • 原文地址:https://www.cnblogs.com/step-by-step1/p/3445540.html
Copyright © 2020-2023  润新知