zoukankan      html  css  js  c++  java
  • 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()"> 
  • 相关阅读:
    Optional的使用
    Spring Boot 传送门
    MP(MyBatis-Plus)实现乐观锁更新功能
    实现数据逻辑删除的一种方案
    凹凸技术揭秘 · 基础服务体系 · 构筑服务端技术中枢
    凹凸技术揭秘 · 夸克设计资产 · 打造全矩阵优质物料
    凹凸技术揭秘·羚珑页面可视化·成长蜕变之路
    90%的开发都没搞懂的CI和CD!
    Devops与敏捷二者能否结合?
    优质单元测试的十大标准,你有遵循吗?
  • 原文地址:https://www.cnblogs.com/step-by-step1/p/3445540.html
Copyright © 2011-2022 走看看