Files
elink-test-master/src/main/resources/static/js/egovframework/EgovMultiFiles.js
T
2023-05-08 10:16:00 +09:00

142 lines
5.2 KiB
JavaScript

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 = "<span>" + element.files[i].name
+ "</span>&nbsp;&nbsp;";
_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;
}
};