function MultiSelector(list_target, max, file_label) { var _base = this; this.list_target = list_target; this.id = 0; this.max = max || -1; this.file_label = file_label; this.addElement = function (element) { if (element.tagName === 'INPUT' && element.type === 'file') { element.multi_selector = _base; element.onchange = function () { var i = 0; var sErrMsg = "첨부파일 개수는 [" + _base.max + "]까지 첨부할 수 있습니다!"; var files_length = 1; if (typeof element.files !== "undefined") { files_length = element.files.length; } if (_base.max < files_length) { element.value = ""; alert(sErrMsg); while (_base.list_target.firstChild) { _base.list_target.removeChild(_base.list_target.firstChild); } return; } if (document.getElementById("egov_file_view_table") != null) { var sum = files_length + document.getElementById("egov_file_view_table") .getElementsByTagName("img").length; if (_base.max < sum) { element.value = ""; alert(sErrMsg); return; } } if (files_length > 0) { while (_base.list_target.firstChild) { _base.list_target.removeChild(_base.list_target.firstChild); } } for (i; i < files_length; i++) { _base.addListRowNew(element, i); } }; _base.current_element = element; } else { alert('Error: not a file input element'); } }; this.addListRowNew = function (element, i) { var new_row = document.createElement('div'); new_row.className = "file_add_" + i; new_row.innerHTML = "" + element.files[i].name + "  "; _base.list_target.appendChild(new_row); }; } var EgovMultiFilesChecker = { getFileExtension: function (filename) { if (filename == null) return ""; var __fileLen = filename.length; var __lastDot = filename.lastIndexOf('.'); if (__lastDot < 0) return ""; var __fileExt = filename.substring(__lastDot, __fileLen).toLowerCase(); return __fileExt; }, checkExtensions: function (fileObjId, allowTypes) { if (document.getElementById(fileObjId) == null) return false; if (typeof document.getElementById(fileObjId).files !== "undefined") { return this.checkExtensionsHTML5(fileObjId, allowTypes); } else { return this.checkExtensionsOldIE(fileObjId, allowTypes); } }, checkExtensionsHTML5: function (fileObjId, allowTypes) { var __filelen = document.getElementById(fileObjId).files.length; var __fileObjs = document.getElementById(fileObjId).files; if (__filelen === 0) return true; for (var i = 0; i < __fileObjs.length; i++) { var __fileObj = __fileObjs[i]; var __fileExt = this.getFileExtension(__fileObj.name); if (__fileExt === "" || (allowTypes + ".").indexOf(__fileExt + ".") < 0) { alert("허용되지 않는 확장자 입니다.[" + __fileExt + "]"); return false; } } return true; }, checkExtensionsOldIE: function (fileObjId, allowTypes) { var __filelPath = document.getElementById(fileObjId).value; var __fileExt = this.getFileExtension(__filelPath); if (__fileExt === "" || (allowTypes + ".").indexOf(__fileExt + ".") < 0) { alert("2.허용되지 않는 확장자 입니다.[" + __fileExt + "]"); return false; } return true; }, checkFileSize: function (fileObjId, allowSize) { if (document.getElementById(fileObjId) == null) return false; if (typeof document.getElementById(fileObjId).files !== "undefined") { return this.checkFileSizeHTML5(fileObjId, allowSize); } else { return this.checkFileSizeOldIE(fileObjId, allowSize); } }, checkFileSizeHTML5: function (fileObjId, allowSize) { var __filelen = document.getElementById(fileObjId).files.length; var __fileObjs = document.getElementById(fileObjId).files; if (__filelen === 0) return true; for (var i = 0; i < __fileObjs.length; i++) { var __fileObj = __fileObjs[i]; if (__fileObj.size > allowSize) { alert("허용되지 않는 파일 사이즈 입니다.[" + __fileObj.name + " : " + __fileObj.size + " bytes / " + allowSize + " bytes]"); return false; } } return true; }, checkFileSizeOldIE: function (fileObjId, allowSize) { alert('구형 브라우저에서는 파일 사이즈 체크를 할수 없습니다.'); return true; } };