■ 파일 삭제 및 업데이트.

1. UploadMultiAction.java

//삭제
public String delete() throws Exception{
  
  dto = new UploadDTO();
  BeanUtils.copyProperties(dto, bean);
  
  if(dto.getFileSize() > 0){
     new File(UploadUtil.SAVE + dto.getFileName()).delete(); //파일 저장위치, 이름만 불러와서 delete를 하면 바로 삭제 된다.
  }
  
  new UploadDAO().delete(dto); //DB 내용 삭제

 return SUCCESS;
 }

//업데이트

public String update() throws Exception{
  
  dto = new UploadDTO();
  
  BeanUtils.copyProperties(dto, bean);
    
  if(this.isState()){
   new File(UploadUtil.SAVE + dto.getFileName()).delete();
   //파일만 삭제 됐을 경우나 파일이 업데이트 됐을경우 파일을 삭제 시켜주고 파일 이름과 사이즈만 초기화 시켜준다.
   dto.setFileName("");    
   dto.setFileSize(0L);
  }
  
  if(bean.getFile() != null){ //파일이 업데이트 됐을 경우 다시 업로드 시켜준다.
   upload();
  }
  
  new UploadDAO().update(dto); //DB를 업데이트 시켜준다.
  
  return SUCCESS;
  
 }

2. modify.jsp

 view 작업이 더 힘든것 같다.-_-;;
체크 박스를 클릭하지 않으면 파일은 변경없이 다른 내용만 변경된다.


체크 박스를 체크하고 업데이트를 할 경우, 새로운 파일을 추가하지 않으면 파일은 삭제된 상태로 업데이트가 되고, 새로운 파일을 올리면 파일이 변경되서 업데이트 된다.


주의 할 점은 name 에 bean.name 과 value 에 dto.name 처럼 써줘야 데이터가 제대로 맵핑된다. 그리고 업데이트 action 부분에 enctype="multipart/form-data"  이 부분을 꼭 써줘야 파일이 업로드 된다.

<%@ page contentType="text/html;charset=euc-kr"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:bean id="bean" name="com.myhome.upload.beans.UploadFormBean"/>

<html>
  <head>
    <title>struts2::upload</title>
    <script type="text/javascript">
    function delProc(){
     if(!confirm('개인정보와 파일을 삭제하시겠습니까?')){
      return;
     }
     //document.modifyform.method.value="delete";
     //document.modifyform.action="delete.action";
     //document.modifyform.submit();
     document.delform.submit();
    }

    function fileCheck(){
           var v = document.modifyform;
           if(v.state == null)return;
           var doc = document.getElementById("fileState");
           var fileChk = document.getElementById("fchk"); 

           fileForm = "<br/>&nbsp;&nbsp;<input type='file' name='bean.file'>";

           if(v.state.value == 'false'){
               v.state.value='true';
               fileChk.innerHTML='파일삭제 또는 변경';
               doc.innerHTML = fileForm;
            }else if(v.state.value == 'true'){
             v.state.value='false';
             fileChk.innerHTML='파일유지';
                doc.innerHTML = '';
           }    
        } 
       
   </script>
   <style type="text/css">
     td  {font-size: 10pt;}
    </style>
  </head>

  <body>
    <center><br><br>
    <h3><b>Struts2 Upload_Download(modify,delete)</b></h3>
   
    <form method="post" name="delform" action="delete.action">
     <input type="hidden" name="bean.num" value="${dto.num }">
     <input type="hidden" name="bean.fileName" value="${dto.fileName }">
     <input type="hidden" name="bean.fileSize" value="${dto.fileSize }">
    </form>
   
    <form method="post" name="modifyform" enctype="multipart/form-data" action="update.action">
<!--      <input type="hidden" name="method" value="update">-->
      <input type="hidden" name="bean.num" value="${dto.num}">
      <input type="hidden" name="bean.fileName" value="${dto.fileName}">
      <input type="hidden" name="bean.fileSize" value="${dto.fileSize }">
      <table border=0 cellpadding=0 cellspacing=1 bgcolor="#000000">
       <tr height=30 bgcolor="#ffffff">
         <td width=100 align="right"><b>번호</b>&nbsp;</td>
         <td width=300 align="left">&nbsp;&nbsp;${dto.num}</td>
       </tr>
       <tr height=30 bgcolor="#ffffff">
         <td width=100 align="right"><b>이름</b>&nbsp;</td>
         <td width=300 align="left">&nbsp;
            <input type="text" name="bean.name" value="${dto.name}">
         </td>
       </tr>
    <tr height=30 bgcolor="#ffffff">
   <td width=100 align="right"><b>성별</b>&nbsp;</td>
   <td width=300 align="left">&nbsp;
            <input type="radio" name="bean.sex" value="남" <c:if test="${dto.sex == '남'}">checked</c:if>>남
            <input type="radio" name="bean.sex" value="여" <c:if test="${dto.sex == '여'}">checked</c:if>>여
         </td>
    </tr>     
    <tr height=30 bgcolor="#ffffff">
      <td width=100 align="right"><b>연락처</b>&nbsp;</td>
   <td width=300 align="left">&nbsp;
   <input type="text" name="bean.tel" value="${dto.tel}">
   </td>
    </tr>
    <tr height=30 bgcolor="#ffffff">
      <td width=100 align="right"><b>등록일자</b>&nbsp;</td>
   <td width=300 align="left">&nbsp;&nbsp;${dto.wdate}</td>
    </tr>
    <tr height=30 bgcolor="#ffffff">
      <td width=100 align="right"><b>첨부파일</b>&nbsp;</td>
   <td width=300 align="left">&nbsp;
    <c:if test="${dto.fileSize > 0}">
           ${dto.fileName}
          <span style="font-size:10pt; color:#90a087">
           (<fmt:formatNumber value="${dto.fileSize}" type="number"/>bytes)
          </span>
          <input type="checkbox" name="state" value="false" onclick="javascript:fileCheck()">
          <span id="fchk" style="font-size:9pt;color:#908756"></span>
        </c:if>
        <span id="fileState"></span>
         <c:if test="${dto.fileSize < 1}"><!-- 파일이 없는 경우 -->
          
          <input type="file" name="bean.file">
         
         </c:if>
   </td>
    </tr>
     <tr height=30 bgcolor="#ffffff">
      <td align="left" colspan=2>
        <span style="font-size:9pt; color:red">
    <s:fielderror />
     </span> 
   </td>
    </tr>
       <tr height=30 bgcolor="#f0f0f0">
    <td align="center" colspan=2>
   <input type="submit" value="갱신...">
   <input type="button" value="삭제..." onclick="delProc()">
   <input type="button" value="등록하기"
     onclick="javascript:location.href='index.action'">
            <input type="button" value="리스트"
              onclick="javascript:location.href='list.action'">
    </td>
   </tr>
    </table>
  </form>
 </center>
 </body>
</html> 

자세한 내용은 파일 참조

이 파일은 이전 까지 한 모든 작업이 포함된 파일이다. (이 파일은 학습 용입니다.)


struts2 삭제, 업데이트 끝!

+ Recent posts