1. 程式人生 > >多檔案上傳,使用js對檔案進行校驗,包括檔案單個大小,格式,總的檔案大小,檔案是否為空等

多檔案上傳,使用js對檔案進行校驗,包括檔案單個大小,格式,總的檔案大小,檔案是否為空等

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'upload.jsp' starting page</title>
    
    <script type="text/javascript" src="js/jquery-2.1.1.js"></script>
    <script type="text/javascript">
   
var num=0;

    var totalSizeArray={};

//新增附件

    function AddAttachments()
        {                  
              document.getElementById('attach').innerText = "繼續新增附件";     
              tb = document.getElementById('attAchments');
              newRow = tb.insertRow();
              newRow.insertCell().innerHTML = "<input name='file' size='50' type='file' id=file"+num+">&nbsp;&nbsp;<input type='button' value='刪除'           onclick='delFile(this.parentElement.parentElement.rowIndex)'>&nbsp;&nbsp;&nbsp;&nbsp;<label id=p"+num+"></label>";         
         
 totalSizeArray[num]=0;
           num ++;

         }

//刪除附件類容

         function delFile(index)
         {    
              totalSizeArray[index]=0;
              document.getElementById('attAchments').deleteRow(index);
              tb.rows.length > 0?document.getElementById('attach').innerText = "繼續新增附件":document.getElementById('attach').innerText = "新增附件"; 
         }  
         $(document).ready(function(){
       
  $("#btnSend").click(function(){

            var fileLength=$("input[type='file']").length;

//判斷是否有上傳的檔案

        if(fileLength==0){
      alert("當前沒有可上傳的檔案");
      return false;
      }else{
      for(var i=0;i<document.form1.elements.length-1;i++)

                {

//判斷文控制元件間內容是否為空

                  if(document.form1.elements[i].value=="")
                  {
                      alert("當前表單不能有空項");
                      document.form1.elements[i].focus();
                      return false;
                  }

                }

//判斷檔案總大小是否大於10M

     
      var totalSize=0;
      for(x in totalSizeArray){
      totalSize=totalSize+totalSizeArray[x];
      }
      if(totalSize>1024*10){
      alert("檔案總大小為:"+totalSize/1024+"MB,超過了10MB,請重新選擇檔案!");
      return false;
      }else{
         $("#form1").submit();
      }
      }
         });
       }); 
       $(document).ready(function () {
            $("#attAchments").delegate("input[type='file']","change",function(){ 
                var filepath = $(this).val();
                var fileId=$(this).attr("id");
                var countNum=fileId.substring(4,fileId.length);
                var count="p"+countNum;
                var extStart = filepath.lastIndexOf(".");

                var ext = filepath.substring(extStart, filepath.length).toUpperCase();

//判斷檔案型別

                if (ext==".ZIP"||ext==".RAR" ||ext==".TXT") {
                    alert("不能上傳字尾名為.txt、.rar、.zip型別的檔案!");
var obj = document.getElementById(fileId) ; 
obj.outerHTML=obj.outerHTML;  
                    $("#"+count).text("");
                    return false;
                } else { $("#"+count).text(filepath);}
                var fileSize=0;         
       fileSize=this.files[0].size;     
       var size=fileSize/1024;

       size=Math.round(size);

//判斷單個檔案是否大於2M

       if(size>1024*2){
        alert("單個檔案大小不能超過2M,請重新選擇檔案!");
        var obj = document.getElementById(fileId) ; 
obj.outerHTML=obj.outerHTML;  
        $("#"+count).text("");
       }else{
        totalSizeArray[countNum]=size;
        size=$("#"+count).text()+"\t\t\t\t"+size;
        $("#"+count).text(size+"KB");
       }
            });
        });
        
    </script>
  <body>
    <form id="form1" name="form1" method="POST" enctype="multipart/form-data" action="uploadServlet">
    <table id="attAchments">
    </table>
    </form>
    <a id="attach" onclick="AddAttachments();" href="javascript:;" name="attach">新增附件</a>
    <input type="button" id="btnSend" value=" 上傳 "/>
  </body>
</html>