파일 업데이트
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>
게시판 수정하기
|
댓글 ( 4)
댓글 남기기