From 03f68042531eefed22b15394399b68202ff49eb8 Mon Sep 17 00:00:00 2001 From: jazz Date: Mon, 22 Dec 2025 18:05:52 +0900 Subject: [PATCH] =?UTF-8?q?fix=20:=20=EC=B2=A8=EB=B6=80=ED=8C=8C=EC=9D=BC?= =?UTF-8?q?=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/config/ResourceServerConfig.java | 2 +- .../util/file/controller/FileController.java | 2 +- .../static/js/sopmal/fileupload_comm.js | 245 ++++-------------- .../views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp | 6 - 4 files changed, 50 insertions(+), 205 deletions(-) diff --git a/src/main/java/com/wb/domainserver/security/config/ResourceServerConfig.java b/src/main/java/com/wb/domainserver/security/config/ResourceServerConfig.java index 026342a8..c139de2f 100644 --- a/src/main/java/com/wb/domainserver/security/config/ResourceServerConfig.java +++ b/src/main/java/com/wb/domainserver/security/config/ResourceServerConfig.java @@ -113,7 +113,7 @@ public class ResourceServerConfig { OrRequestMatcher resourceMatchers = new OrRequestMatcher(resourcePath); return http - .securityMatcher("/sopmal/**", "/oauth2/**", "/login/oauth2/**") + .securityMatcher("/sopmal/**", "/oauth2/**", "/login/oauth2/**","/file/*") .headers((headers)->headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)) .csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(authorize -> diff --git a/src/main/java/com/wb/domainserver/util/file/controller/FileController.java b/src/main/java/com/wb/domainserver/util/file/controller/FileController.java index 067ced6a..72fa8ee4 100644 --- a/src/main/java/com/wb/domainserver/util/file/controller/FileController.java +++ b/src/main/java/com/wb/domainserver/util/file/controller/FileController.java @@ -39,7 +39,7 @@ import java.util.Map; @Slf4j @Controller -@RequestMapping("/mngr/file") +@RequestMapping(value={"/mngr/file","/file"}) public class FileController { @Autowired diff --git a/src/main/resources/static/js/sopmal/fileupload_comm.js b/src/main/resources/static/js/sopmal/fileupload_comm.js index 6caa622c..094a757c 100644 --- a/src/main/resources/static/js/sopmal/fileupload_comm.js +++ b/src/main/resources/static/js/sopmal/fileupload_comm.js @@ -10,109 +10,83 @@ addFilesObj(event, mode,"fileList"); } - function addFilesObj(event, mode, objId, represntAt){ + function addFilesObj(event, mode, objId){ if(!($(event.target).is('[multiple]'))) filesTempArr.splice(0, filesTempArr.length); - var files = event.target.files; //선택한 파일들 + var files = event.target.files; var filesArr = Array.prototype.slice.call(files); //file객체 array추가 var filesArrLen = filesArr.length; var filesTempArrSize = filesTempArr.length*1; let obj = $('#'+objId); - if((mode === 1 && filesArrLen>1) || (mode === 1 && obj.find('li').length>0)){ + + if(mode === 1 && obj.find('li').length>0){ alert("파일은 한개만 첨부할 수 있습니다."); return; } var templist = ''; for(var i=0; i"+ filesArr[i].name + "   [X]"; - let fileSize = (filesArr[i].size / 1024).toFixed(2); - if(objId=='fileList'){ - templist ="
  • " - +"" - + "" - + ""+ filesArr[i].name + "" - +"" - +"
  • "; - }else { - templist = "
  • " - + "

    " - + " "+ filesArr[i].name + "" - + "("+ fileSize + " KB)" - + "

    " - + "" - + "" - + "
  • " - } + templist ="
  • " + +"" + + "" + + ""+ filesArr[i].name + "" + +"" + +"
  • "; + obj.append(templist); } } } - - //파일삭제 - //callbackNm ajax 파일 처리 성공시 실행 할 콜백함수 - function deleteFile(obj, shopCd, menuGb, orderParam,callbackNm,callbackParam) { - deleteFiles(obj, shopCd, menuGb, orderParam, 'fileUpload',callbackNm,callbackParam); - } - - //파일삭제 - function deleteFiles(obj, shopCd, menuGb, orderParam, objId, callbackNm,callbackParam) { - filesTempArr.splice(orderParam, 1); - var $div = $(obj).closest('li'); - var $id = $div.attr('id'); - var obj = "#" + objId; - if ($id.indexOf('temp') == 0) { //임시등록파일은 화면에서 삭제 - $div.remove(); - $(obj).val(''); - } else { //업로드된 파일은 서버삭제 - if (confirm("파일을 삭제하시겠습니까?")) { - ajaxFileDelete($div, $id, shopCd, menuGb, orderParam,callbackNm,callbackParam); - } - } - } - - //파일삭제(html 요소 조작 없이 단순 파일 삭제) - function dropzoneDeleteFiles(fileId, shopCd, menuGb, orderParam,callbackNm,callbackParam) { + //드롭존 파일삭제(html 요소 조작 없이 단순 파일 삭제) + function dropzoneDeleteFiles(fileId, shopCd, menuGb, orderParam, callbackNm) { if (fileId.indexOf('temp') != 0) { //임시등록파일은 화면에서 삭제 if (confirm("파일을 삭제하시겠습니까?")) { - ajaxFileDelete('', fileId, shopCd, menuGb, orderParam, callbackNm,callbackParam); + ajaxFileDelete('', fileId, shopCd, menuGb, orderParam, callbackNm); return "Y"; - }else{ + } else { return "N"; } } } - var ajaxFileDelete = function (obj, fileId, shopCd, menuGb, orderParam, callbackNm,callbackParam) { + //파일삭제 + function deleteFile (obj, shopCd, menuGb, orderParam){ + deleteFiles (obj, shopCd, menuGb, orderParam, '#fileUpload'); + } + //파일삭제 + function deleteFiles (obj, shopCd, menuGb, orderParam, objNm){ + filesTempArr.splice(orderParam, 1); + var $div = $(obj).closest('li'); + var $id = $div.attr('id'); + + if($id.indexOf('temp') == 0) { //임시등록파일은 화면에서 삭제 + $div.remove(); $(objNm).val(''); + }else{ //업로드된 파일은 서버삭제 + if(confirm("파일을 삭제하시겠습니까?")){ + ajaxFileDelete($div,$id,shopCd, menuGb,orderParam); + } + } + } + + var ajaxFileDelete = function(obj,fileId,shopCd, menuGb,orderParam){ $.ajax({ - //url: '/file/deleteUploadedFile/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax', - url: '/file/deleteUploadedFile?sopCd=' + shopCd + '&menuGb=' + menuGb + '&fileKey=' + fileId, - data: fileId, + // url: '/file/deleteUploadedFile/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax', + url: '/file/deleteUploadedFile?sopCd='+shopCd+'&menuGb='+menuGb+'&fileKey='+fileId, + data: {fileId:fileId}, type: 'get', - success: function (data) { - if (obj !== '') { + success : function(data){ + if(obj !== ''){ obj.remove(); } - if (callbackNm != null) { - callbackNm(callbackParam); - } }, - error: function () { + error: function(){ alert("삭제에 실패하였습니다."); } }); @@ -132,144 +106,21 @@ } //$(location).attr('href','/file/download/'+shopCd+'/'+menuGb+'/'+fileId+'/'+orgFileId+'/ajax'); - //$(location).attr('href','/file/download/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax'); + //$(location).attr('href','/file/download/'+shopCd+'/'+menuGb+'/'+fileId+'/ajax'); $(location).attr('href','/file/fileDownload?sopCd='+shopCd+'&menuGb='+menuGb+'&fileKey='+fileId); } //다운로드 - var linkDownloadFile = function(key,shopCd, menuGb,orderParam){ //파일글번호, 원본파일명 + var linkDownloadFile = function(key, fileName ,shopCd, menuGb,orderParam){ //파일글번호, 원본파일명 filesTempArr.splice(orderParam, 1); if(key.indexOf('temp') == 0){ alert("등록된 파일만 다운로드 가능합니다."); return false; } + + //$(location).attr('href','/file/download/'+shopCd+'/'+menuGb+'/'+key+'/ajax'); $(location).attr('href','/file/fileDownload?sopCd='+shopCd+'&menuGb='+menuGb+'&fileKey='+key); } - - - //----------------------------------------------------------- - // 이미지 업로드 시 이미지 미리보기 , 삭제버튼(배열에서 제거함) 기능 - //----------------------------------------------------------- - - // let selectedFiles = []; // 선택된 파일을 저장하는 배열 - function addImgFilesView(event,objId){ - const previewContainer = document.getElementById(objId); - const files = event.target.files; // 선택된 파일들 가져오기 - // previewContainer.innerHTML = ''; // 기존 미리보기 초기화 - // filesTempArr = []; // 기존 배열 초기화 - - // 파일 개수 제한 확인 - // const maxFiles = 3; // 최대 파일 개수 제한 - /*if (filesTempArr.length + files.length > maxFiles) { - alert(`최대 ${maxFiles}개의 파일만 업로드할 수 있습니다.`); - return; - } - Array.from(files).forEach((file) => { - if (filesTempArr.length < maxFiles) { - filesTempArr.push(file); // 파일 추가 - displayPreview(file, previewContainer); - } - });*/ - Array.from(files).forEach((file) => { - filesTempArr.push(file); // 파일 추가 - displayPreview(file, previewContainer); - }); - - // input 초기화 (같은 파일 재선택 가능) - event.target.value = ''; - } - - function displayPreview(file,obj) { - const reader = new FileReader(); - - reader.onload = function (e) { - // 미리보기 항목 생성 - const previewItem = document.createElement('div'); - previewItem.classList.add('preview-item'); - - // 이미지 태그 생성 - const img = document.createElement('img'); - img.src = e.target.result; - - // 삭제 버튼 생성 - const deleteBtn = document.createElement('button'); - deleteBtn.classList.add('delete-btn'); - deleteBtn.textContent = '×'; - deleteBtn.onclick = function () { - removeImgFile(file, previewItem); - }; - - // 미리보기 항목에 이미지와 버튼 추가 - previewItem.appendChild(img); - previewItem.appendChild(deleteBtn); - obj.appendChild(previewItem); - }; - - reader.readAsDataURL(file); - } - - function removeImgFile(file, previewItem) { - // 선택된 파일 배열에서 제거 - filesTempArr = filesTempArr.filter((f) => f !== file); - - // 미리보기 항목 제거 - previewItem.remove(); - } - - - - - -//------------------------------------------------------------------------------------------- - var initFileList = function($files){ - if(Array.isArray($files)){ - $.each($files, function(index, item){ - filesTempArr.push(item); - filesTempArr[index].upload = 'disable'; - }); - }else{ - filesTempArr.push(new File([$files], $files+".txt", { - type: "text/plain", - })); - filesTempArr[0].upload = 'disable'; - } - } - - - //파일삭제(단건) - function deleteSingleFile (obj, eventParam, orderParam){ - if(confirm('삭제하시겠습니까?')){ - filesTempArr.splice(orderParam, 1); - var $div = $(obj).closest('div') - var $id = $div.attr('id'); - if($id.indexOf('temp') == 0) { - $div.remove(); - }else{ - $div.remove(); - - $('#updateFileDiv').show(); - filesTempArr = []; - $('#imgSavedYn').val("N"); - //ajaxSingleFileDelete($id); - } - } - } - //파일삭제(단건) 후처리 - var ajaxSingleFileDelete = function(fileId){ - $.ajax({ - url: '/bo/comm/file/deleteUploadedFile/'+fileId+"/ajax", - data: fileId, - type: 'post', - success : function(data){ - //찾아보기 div구역 id = updateFileDiv - $('#updateFileDiv').show(); - filesTempArr = []; - }, - error: function(xhr, status, error){ - alert("삭제에 실패하였습니다."); - } - }); - } diff --git a/src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp b/src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp index 44a62f90..08c0b285 100644 --- a/src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp +++ b/src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsDtlUpdtU.jsp @@ -2105,12 +2105,6 @@ - -
    - - -
    -