JSP

 

파일 업데이트

 

controller

 

if(url.indexOf("update.do")!=-1){
		
			
			//파일업로드 처리
			File fileUpoadDir =new File(Constant.uplLoadPath(request));
			if(fileUpoadDir.exists()){
				fileUpoadDir.mkdirs();
			}
			
			//request, 업로드 경로, 업로드 제한 용량, 문자셋, 중복파일
			MultipartRequest multi =new MultipartRequest(
					request,
					Constant.uplLoadPath(request),
					Constant.MAX_UPLOAD,
					"utf-8",
					new DefaultFileRenamePolicy());
			

			String filecheck=multi.getParameter("filecheck");
			String orignalFilename=multi.getParameter("orignalfilename");
			String num=multi.getParameter("num");	
			String ip=request.getRemoteAddr();//ip 주소
			
			BoardDTO dto=new BoardDTO();
			dto.setNum(Integer.parseInt(num));
			dto.setWriter(multi.getParameter("writer"));
			dto.setSubject(multi.getParameter("subject"));
			dto.setContent(multi.getParameter("content"));
			dto.setPasswd(multi.getParameter("passwd"));
			dto.setIp(ip);
				
			Enumeration files =multi.getFileNames();	
			
			//ip 차단
			String[] bad_ips={"192.168.0.50", "192.168.0.60"};
			for(String str : bad_ips){
				if(ip.equals(str)){
					response.sendRedirect(contextPath
							+"/board/write.jsp?message=bad");
					
					//만약 업로드 된 파일이 존재 하면 삭제		
					while(files.hasMoreElements()){
						String file1=(String)files.nextElement();
						//첨부파일의 이름
						File f1=multi.getFile(file1);
						f1.delete();
					}
					return;
				}
			}
			
			String filename="";
			Integer filesize=0;
			
			//체크박스 체크 상태일때
			if(filecheck!=null){	
				//현재 업로드 된 파일이 존재하면  삭제		
				while(files.hasMoreElements()){
					String file1=(String)files.nextElement();
					//첨부파일의 이름
					File f1=multi.getFile(file1);
					if(f1!=null){
						f1.delete();
					}
				}
		
				//파일 삭제 
				new File(Constant.uplLoadPath(request)+File.separator+orignalFilename).delete();
				//DB 에서 파일 명 삭제
				//dao.fileDelete(Integer.parseInt(num));
				
				//업데이트	
				
				
			}else{
				//	
				while(files.hasMoreElements()){
					String file1=(String)files.nextElement();	
					//첨부파일의 이름
					filename=multi.getOriginalFileName(file1);
					File f1=multi.getFile(file1);
					
					//업로드 된 파일이 존재 하면
					if(f1!=null){
						filesize=(int)f1.length();//파일크기
						//첨부파일의 확장자 검사
						int start=filename.lastIndexOf(".")+1;
						String ext=filename.substring(start, filename.length());
						if(ext.equals("jsp")||ext.equals("exe")
							|| ext.equals("php")	
								){
							f1.delete();//업로드된 파일을 삭제함
							response.sendRedirect(contextPath
									+"/board/write.jsp?message=error");
							return;
						}
							
					}else{
						//업로된 파일이 없으면 기존의 파일 사용
						filename=orignalFilename;
						filesize=Integer.parseInt(multi.getParameter("filesize"));			
					}
				}
			}
			
			
			//최종적으로 업데이트			
			dto.setFilename(filename);
			dto.setFilesize(filesize);
			System.out.println(dto.toString());
			
			dao.updateAllFile(dto);
			
			
			String page=request.getServletContext()+"/board_servlet/list.do";
			response.sendRedirect(page);

				
		}

 

 

 

dao

 

	public void updateAllFile(BoardDTO dto) {
		SqlSession session =null;
		try{
	        session=MybatisManager.getInstance().openSession();	
			session.update("board.updateAllFile", dto);
			session.commit();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(session!=null) session.close();
		}
		
	}

 

 

	<!-- 파일 삭제 -->
	<update id="fileDelete">
		update board set filename='', filesize='' where num=#{num}
	</update>
	
	<update id="updateAllFile">		
   update board set content=#{content} , writer=#{writer}, 
    	subject=#{subject}, passwd=#{passwd}, filename=#{filename}, filesize=#{filesize}
	   where num=#{num}
	</update>
	

 

 

view.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="../include/header.jsp" %>    
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>


<h2>게시판 수정하기</h2>


<form name="form1" id="form1" method="post" 
	action="${path}/board_servlet/update.do"
	enctype="multipart/form-data">

<table border="1" >

 <tr>
 	<td>이름</td>
 	<td><input type="text" name="writer"  value="${dto.writer}"></td>
 </tr>


 <tr>
 	<td>제목</td>
 	<td><input type="text" name="subject" size="60" value="${dto.subject}"></td>
 </tr>


 <tr>
 	<td>본문</td>
 	<td><textarea rows="5"  cols="100" name="content">${dto.content}</textarea></td>
 </tr>

 <tr>
 	<td>첨부파일</td>
 	<td>
 	
 	${dto.filename } ( ${dto.filesize}) bytes
 	
 	 <input type="hidden" name="orignalfilename"  value="${dto.filename }">
 	 <input type="hidden" name="filesize" value="${dto.filesize}">
 	 <input type="checkbox"  name="filecheck" > 파일 삭제
 	 
 	 
 	<c:if test="${param.message=='error' }">
 		<span style="color:red;">업로드 할수 없는 파일 입니다.</span>
 	</c:if>
 	<br>
 	<input type="file" name="file1" >
 	
 	
 	</td>
 </tr>

 <tr>
 	<td>비밀번호</td>
 	<td><input type="password" name="passwd" value="${dto.passwd}"></td>
 </tr>

 <tr>
   <td colspan="2">
   	<input type="text" name="num" value="${dto.num}">
   	<input type="submit" value="확인"  id="btnSave">
   </td>
 </tr>

</table>

</form>


<c:if test="${param.message=='bad' }">
 <span style="color:red;">차단된 IP 입니다.</span>
</c:if>



</body>
</html>

 

 

 

게시판 수정하기

이름
제목
본문
첨부파일 ( 0) bytes  파일 삭제 
비밀번호
 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

진상 가는 송아지 배때기를 찼다 , 쓸데없는 짓을 하여 봉변을 당했다는 말.

댓글 ( 4)

댓글 남기기

작성