본문 바로가기

IT

javascript 파일 업로드 용량 확인 후 제한하기

방법1) 브라우저 체크하여 용량 체크하기 - IE에서는 정상동작 하지 않을 수 있음.

  1. //아래 4개의 함수를 스크립트 영역에 선언
  2. //$('#upFile').val(); 의 아이디는 자신이 지정한 id로 변경한다.
  3.    function checkIEBrowser() {
  4.      var agent = navigator.userAgent.toLowerCase();
  5.      if ((navigator.appName == 'Netscape' && navigator.userAgent
  6.         .search('Trident') != -1)
  7.          || (agent.indexOf("msie") != -1)) {
  8.        return true;
  9.      } else {
  10.        return false;
  11.      }
  12.    };//checkIEBrowser
  13.  
  14.    function validateFileSizeIE(limit) {
  15.      var myFSO = new ActiveXObject("Scripting.FileSystemObject");
  16.      var filePath = $('#upFile').val();
  17.      if (filePath == '') {
  18.        alert('파일을 등록하세요.');
  19.        return;
  20.      }
  21.      var thisFile = myFSO.getFile(filePath);
  22.      var size = thisFile.size;
  23.      if (size > limit * 1024 * 1024) { //1mb
  24.        alert('파일의 용량이 너무 큽니다. 다시 확인해주세요');
  25.       $('#upFile').val('');
  26.      }
  27.    };//validateFileSizeIE
  28.  
  29.    function validateFileSizeOther(limit) {
  30.      if ($('#upFile').val() == '') {
  31.        alert('파일을 등록하세요.');
  32.        return;
  33.      }
  34.      var size = $('#upFile')[0].files[0].size;
  35.      if (size > limit * 1024 * 1024) { //1mb
  36.        alert('파일의 용량이 너무 큽니다. 다시 확인해주세요');
  37.       $('#upFile').val('');
  38.      }
  39.    };//validateFileSizeOther
  40.  
  41. //limitFileSize 변수에 제한할 값을 넣고 마지막에 이 함수만 호출해주면 하나의 모듈로 호출가능 
  42.    function validationFileSize(limitFileSize){
  43.      if(checkIEBrowser()){
  44.       validateFileSizeIE(limitFileSize);
  45.        return;
  46.      }else{
  47.       validateFileSizeOther(limitFileSize);
  48.      }
  49.      };//validationFileSize
  50.  
  51.  
  52.  
  53.  

방법2) 위 방법에서 IE는 정상작동 하지 않을수 있어서 내가 별도로 만든 함수 - 굉장히 잘돌아간다.

  1. //호출할땐 저 함수에 input파일에서 onchange될때 파일사이즈를 넣어서 호출한다. ex) fileSizeCheck(parseInt(this.files[0].size))
  2.    //업로드 파일 용량체크 루틴 
  3.    function fileSizeCheck(fileSize){
  4.      var bytes = parseInt(fileSize);
  5.      var s = ['bytes''KB''MB''GB''TB''PB'];
  6.      var e = Math.floor(Math.log(bytes)/Math.log(1024));
  7.     
  8.      if(e == "-Infinity"){
  9.        //0kb 파일일때
  10.        return "0 "+s[2];
  11.      }else{
  12.        //0kb가 아닐때
  13.        var intVal = (bytes/Math.pow(1024, Math.floor(e))).toFixed(2);
  14.       
  15.        if((s[e] == s[2]) && (intVal > 10.00)){
  16.          alert(' 10MByte 미만의 파일만 업로드 가능합니다 ');
  17.        }            
  18.        return (bytes/Math.pow(1024, Math.floor(e))).toFixed(2)+s[e];      
  19.      }
  20.  
  21.    }
  1.