/** * BP설명 이미지, BP브랜드 이미지를 삭제한다.(ajax) */ function deleteBpFile(fileType) { var mbrNo = document.getElementById("mbrNo").value; // 이미지 삭제 링크 숨기기 if(fileType == "BP_DESC") { document.getElementById("deleteBpDesc").style.display = "none"; //document.getElementById("linkBpDesc").style.display = "none"; } else { document.getElementById("deleteBpBrand").style.display = "none"; } var parameter = "mbrNo=" + mbrNo + "&fileType=" + fileType; //alert(parameter); var req = newXMLHttpRequest(); req.onreadystatechange=getReadyStateXmlHandler(req, fileDeleted); req.open("POST", "${pageContext.request.contextPath}/manage/deleteBpFile.omp", true); // 비동기처리여부 req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(parameter); } /** * ajax 응답(xml)을 받아서 처리 */ function fileDeleted(xml) { var bodyTag = xml.getElementsByTagName("body")[0]; var typeTag = bodyTag.getElementsByTagName("type")[0]; //alert(typeTag); var type = typeTag.firstChild.nodeValue; //alert(type); var resultTag = bodyTag.getElementsByTagName("result")[0]; var result = resultTag.firstChild.nodeValue; if(result == "Y") { // 파일 링크 지우기 if(type == "BP_DESC") { document.getElementById("linkBpDesc").style.display = "none"; } else { document.getElementById("linkBpBrand").style.display = "none"; } } else { // 파일 삭제 링크 다시 보여주기 if(type == "BP_DESC") { document.getElementById("deleteBpDesc").style.display = ""; } else { document.getElementById("deleteBpBrand").style.display = ""; } } } // ajax call <span id="linkBpDesc"><strong><s:a href="%{url}"><s:property value="%{umBpInfo.bpDescImgName}"/></s:a></strong></span> <span id="deleteBpDesc"><a href="#" onclick="deleteBpFile('BP_DESC'); return false;">이미지 삭제</a></span> |
Action & Service
// Action // BP회원 관련 파일 - BP설명이미지, BP브랜드이미지 파일 삭제 public String deleteBpFile() { log.debug("<< ManageAction.deleteBpFile... >>"); HttpServletRequest request = this.getRequest(); String mbrNo = request.getParameter("mbrNo"); String fileType = request.getParameter("fileType"); log.debug("mbrNo = " + mbrNo); log.debug("fileType = " + fileType); String xml = this.manageService.deleteBpFile(mbrNo, fileType); setInputStream(new ByteArrayInputStream(xml.getBytes())); return SUCCESS; } // 설정파일 <!-- 파일 삭제 --> <action name="deleteBpFile" class="com.omp.bp.cms.manage.action.ManageAction" method="deleteBpFile"> <result type="stream"> <param name="inputName">inputStream</param> <param name="contentType">text/xml</param> <param name="bufferSize">4096</param> </result> </action> // Service // BP추가 파일 삭제 후, 결과를 XML형식으로 반환 @SuppressWarnings("unchecked") public String deleteBpFile(String mbrNo, String fileType) throws ServiceException { log.debug("<ManageServiceImpl> deleteBpFile..."); StringBuffer xml = null; UserMemberBpInfo umbi = null; try { // DB에서 파일 경로를 얻음 umbi = this.manageDAO.getMemberBpinfo(mbrNo); if(umbi == null) { throw new ServiceException("BP추가 파일 삭제 중 BP회원 정보 읽기 실패", "getMemberBpinfo FAIL"); } // 파일경로 변경 - 앞에 /data 붙이기 umbi = DataUtil.makeFilePathFromDB(umbi); // fileType에 따라 파일 삭제 if(StringUtils.equalsIgnoreCase(fileType, "BP_DESC")) { File f = new File(umbi.getBpDescImgPath()); if(f.exists() && f.isFile()) { if(!f.delete()) { throw new ServiceException("BP추가 파일 삭제 중 설명 파일 삭제 실패", "delete FAIL"); } else { log.debug("BP 설명 물리 파일 삭제"); // DB 갱신 - 파일 경로 삭제 Map map = new HashMap(); map.put("mbrNo", mbrNo); map.put("fileType", fileType); if(!this.manageDAO.deleteBpFile(map)) { throw new ServiceException("BP추가 파일 삭제 중 DB 갱신 실패", "update db FAIL"); } log.debug("BP 설명 파일 경로 삭제"); } } } else if(StringUtils.equalsIgnoreCase(fileType, "BP_BRAND")) { File f = new File(umbi.getBpTbnailImgPath()); if(f.exists() && f.isFile()) { if(!f.delete()) { throw new ServiceException("BP추가 파일 삭제 중 브랜드 파일 삭제 실패", "delete FAIL"); } else { log.debug("BP 브랜드 물리 파일 삭제"); // DB 갱신 - 파일 경로 삭제 Map map = new HashMap(); map.put("mbrNo", mbrNo); map.put("fileType", fileType); if(!this.manageDAO.deleteBpFile(map)) { throw new ServiceException("BP추가 파일 삭제 중 DB 갱신 실패", "update db FAIL"); } log.debug("BP 브랜드 파일 경로 삭제"); } } } // 삭제 결과를 XML로 작성 xml = makeXmlForDeleteBpFileResult(fileType, true); } catch(Exception e) { log.debug("BP추가 파일 삭제 실패", e); xml = makeXmlForDeleteBpFileResult(fileType, false); } return xml.toString(); } private StringBuffer makeXmlForDeleteBpFileResult(String fileType, boolean isSucceeded) { StringBuffer xml = new StringBuffer(); xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); xml.append("<body>"); xml.append("<type>"); xml.append(fileType); xml.append("</type>"); xml.append("<result>"); xml.append(isSucceeded ? "Y" : "N"); xml.append("</result>"); xml.append("</body>"); log.debug("DELETE BP FILE - XML"); log.debug(xml.toString()); return xml; } |
의외로 간단하기도 하지만 스크립트쪽 처리가 복잡할 듯.
gmail, google docs 같은 건 정말 어떻게 만든 건지 신기할 뿐..
'프로그래밍 > Web' 카테고리의 다른 글
[jQuery] jQuery 예제 02 (0) | 2009.09.04 |
---|---|
[javascript] IE6.0 프레임 - 가로 스크롤바 버그 (0) | 2009.08.21 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기2 (0) | 2009.07.30 |
[javascript] 이미지 파일 업로드 시 이미지의 사이즈 알아내기 (0) | 2009.07.29 |
[html] HtmlCleaner를 이용한 html 파싱 (1) | 2009.07.27 |