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()"> 
  • 相关阅读:
    Linux系统类别
    ST-GCN基于skeleton的动作识别
    (gcc/g++)/clang/cl编译器
    羽毛球经典教材范例
    opencv批量读取图片
    十六、mysql 变量
    十五、mysql 存储过程
    十四、mysql 视图
    十三、mysql TCL语言
    十二、mysql 标识列
  • 原文地址:https://www.cnblogs.com/step-by-step1/p/3445540.html
Copyright © 2011-2022 走看看