nbs0105 / BOOT_CMS star
nbs0105 2023-05-26
사이트 관리 이미지 썸네일 생성, 삭제(미완성)
@236a80f2675dc6c035403cf508e52e3d74fa4d91
base/src/main/webapp/WEB-INF/jsp/egovframework/mng/sym/sit/SiteInfoRegist.jsp
--- base/src/main/webapp/WEB-INF/jsp/egovframework/mng/sym/sit/SiteInfoRegist.jsp
+++ base/src/main/webapp/WEB-INF/jsp/egovframework/mng/sym/sit/SiteInfoRegist.jsp
@@ -19,6 +19,7 @@
 	<c:param name="title" value="사이트관리"/>
 </c:import>
 
+<script src="${M_JS}/util.js"/>
 <script src="<c:url value="/validator.do"/>"></script>
 <validator:javascript formName="siteManageVO" staticJavascript="false" cdata="false"/>
 
@@ -168,6 +169,35 @@
 	$('#brwsrSj').val(nm);
 }
 
+
+$(document).on('change', 'input[type=file]', function (e) {
+
+	var maxSize = 1024 * 1024 * 1024;
+	var fileSize = this.files[0].size;
+
+	if(fileSize > maxSize){
+		alert("첨부파일 사이즈는 1GB 이내로 등록 가능합니다.");
+		$(this).val('');
+		return false;
+	}
+
+	//썸네일 이미지
+	if(validImgFile($(this))){
+		setImgFileThumbnail(e.target.files[0],$(this));
+	}
+
+});
+
+function delImgFile(target){
+	
+	var form = $('#siteManageVO');
+	var fileInputNm = $(target).parents('.file-add-area').find('.file-custom').find('input[type="file"]').attr('id');
+	$(target).parents('.file-add-area').find('.file-custom').find('img').remove();
+	$(target).parents('.file-add-area').find('.file-custom').find('input[type="file"]').val("");
+	$(target).parents('.file-add-area').find('.item-area').remove();
+	form.find('input[name="'+fileInputNm+'Nm"]').val('');
+}
+
 </script>
 
 
@@ -192,6 +222,10 @@
 	<input name="pageIndex" type="hidden" value="<c:out value='${searchVO.pageIndex}'/>"/>
 	<input name="searchCondition" type="hidden" value="<c:out value="${searchVO.searchCondition}"/>"/>
 	<input name="searchKeyword" type="hidden" value="<c:out value="${searchVO.searchKeyword}"/>"/>
+	<input name="upendLogoFileNm" type="hidden" value="<c:out value="${siteManageVO.upendLogoFileNm}"/>"/>
+	<input name="lptLogoFileNm" type="hidden" value="<c:out value="${siteManageVO.lptLogoFileNm}"/>"/>
+	<input name="peprsntImageFileNm" type="hidden" value="<c:out value="${siteManageVO.peprsntImageFileNm}"/>"/>
+	<input name="sloganFileNm" type="hidden" value="<c:out value="${siteManageVO.sloganFileNm}"/>"/>
 
 	<fieldset>
 		<legend class="hdn">사이트 입력 폼</legend>
@@ -259,11 +293,11 @@
 						</td>
 					</tr>
 					<tr>
-						<th><label for="upendLogoFileIdFile">상단로고</label></th>
+						<th><label for="upendLogoFile">상단로고</label></th>
 						<td>
 							<div class="file-add-area">
 								<div class="file-custom">
-									<input type="file" name="upendLogoFileIdFile" id="upendLogoFileIdFile" class="input-file" title="상단로고파일"/>
+									<input type="file" name="upendLogoFile" id="upendLogoFile" class="input-file" title="상단로고파일"/>
 									<div class="preview-area">
 										<c:if test="${not empty siteManageVO.upendLogoFileNm}">
 											<img src="${SiteFileStoreWebPath}${siteManageVO.siteId}/${siteManageVO.upendLogoFileNm}"/>
@@ -275,7 +309,7 @@
 									<div class="item-area">
 										<div class="item">
 											<p class="txt"><c:out value="${siteManageVO.upendLogoFileNm}"/></p>
-											<button type="button" class="ico-sm-close btn-del"><span class="txt-hide">삭제</span></button>
+											<button type="button" class="ico-sm-close btn-del" onclick="delImgFile(this)"><span class="txt-hide">삭제</span></button>
 										</div>
 									</div>
 								</c:if>
@@ -283,11 +317,11 @@
 						</td>
 					</tr>
 					<tr>
-						<th><label for="lptLogoFileId">하단로고</label></th>
+						<th><label for="lptLogoFile">하단로고</label></th>
 						<td>
 							<div class="file-add-area">
 								<div class="file-custom">
-									<input type="file" name="lptLogoFileId" id="lptLogoFileId" class="input-file" title="하단로고파일"/>
+									<input type="file" name="lptLogoFile" id="lptLogoFile" class="input-file" title="하단로고파일"/>
 									<div class="preview-area">
 										<c:if test="${not empty siteManageVO.lptLogoFileNm}">
 											<img src="${SiteFileStoreWebPath}${siteManageVO.siteId}/${siteManageVO.lptLogoFileNm}"/>
@@ -299,7 +333,7 @@
 									<div class="item-area">
 										<div class="item">
 											<p class="txt"><c:out value="${siteManageVO.lptLogoFileNm}"/></p>
-											<button type="button" class="ico-sm-close btn-del"><span class="txt-hide">삭제</span></button>
+											<button type="button" class="ico-sm-close btn-del" onclick="delImgFile(this)"><span class="txt-hide">삭제</span></button>
 										</div>
 									</div>
 								</c:if>
@@ -323,7 +357,7 @@
 									<div class="item-area">
 										<div class="item">
 											<p class="txt"><c:out value="${siteManageVO.peprsntImageFileNm}"/></p>
-											<button type="button" class="ico-sm-close btn-del"><span class="txt-hide">삭제</span></button>
+											<button type="button" class="ico-sm-close btn-del" onclick="delImgFile(this)"><span class="txt-hide">삭제</span></button>
 										</div>
 									</div>
 								</c:if>
@@ -347,7 +381,7 @@
 									<div class="item-area">
 										<div class="item">
 											<p class="txt"><c:out value="${siteManageVO.sloganFileNm}"/></p>
-											<button type="button" class="ico-sm-close btn-del"><span class="txt-hide">삭제</span></button>
+											<button type="button" class="ico-sm-close btn-del" onclick="delImgFile(this)"><span class="txt-hide">삭제</span></button>
 										</div>
 									</div>
 								</c:if>
 
base/src/main/webapp/resources/manage/js/util.js (added)
+++ base/src/main/webapp/resources/manage/js/util.js
@@ -0,0 +1,38 @@
+function setImgFileThumbnail(file,target) {
+    var fileNm = file.name;
+    var filesize = Math.round(file.size / 1024) + "KB";
+    var reader = new FileReader();
+
+    reader.onload = function (e) {
+        var img = document.createElement("img");
+        img.setAttribute("src", e.target.result);
+        target.parent().find('.preview-area').children('img').remove();
+        target.parent().find('.preview-area').html(img);
+    };
+
+    reader.readAsDataURL(file);
+    if(target.parents('.file-add-area').find('.item-area').length < 1){
+        var html = '<div class="item-area">\n' +
+            '\t\t\t\t\t\t\t\t\t\t<div class="item">\n' +
+            '\t\t\t\t\t\t\t\t\t\t\t<p class="txt">'+fileNm+'</p>\n' +
+            '\t\t\t\t\t\t\t\t\t\t\t<button type="button" class="ico-sm-close btn-del" onclick="delImgFile(this)"><span class="txt-hide">삭제</span></button>\n' +
+            '\t\t\t\t\t\t\t\t\t\t</div>\n' +
+            '\t\t\t\t\t\t\t\t\t</div>'
+    target.parents('.file-add-area').append(html);
+    }else{
+        target.parents('.file-add-area').find('.item-area .item .txt').text(fileNm);
+    }
+}
+
+function validImgFile(file){
+    var ext = file.val().split('.').pop().toLowerCase();
+
+    if($.inArray(ext, ['png','jpg','jpeg','svg','gif']) == -1) {
+        alert('이미지 파일만 등록가능합니다.');
+        file.val("");
+        return false;
+    }
+    return true;
+}
+
+
Add a comment
List