142 lines
5.2 KiB
JavaScript
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> ";
|
|
_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;
|
|
}
|
|
};
|