jsp 자료실 소스: 수정하기(첨부파일수정)
1.자료실 글 수정하기 관련sql(mapper.xml)
<update id=”databoardUpdate” parameterType=”DataBoard”>
UPDATE databoard SET name=#{name},subject=#{subject},content=#{content},
regdate=SYSDATE,filename=#{filename},filesize=#{filesize}
WHERE no=#{no}
</update>
2. 자료실 글 수정하기(모델)(스프링에선 컨트롤러, 스트러츠에선 액션)
@RequestMapping(“databoard_update_ok.do”)
public String databoard_update_ok(Model model) throws Exception{
//비번 검색
model.getRequest().setCharacterEncoding(“EUC-KR”);
String path=”c:\\download”;
File dir=new File(path);
if(!dir.exists())
dir.mkdir();
String enctype=”EUC-KR”;//한글 파일명 저장
int size=1024*1024*500;//최대 500메가
MultipartRequest mr=new MultipartRequest(model.getRequest(),path,size,enctype,new DefaultFileRenamePolicy());
String name=mr.getParameter(“name”);
String subject=mr.getParameter(“subject”);
String content=mr.getParameter(“content”);
String pwd=mr.getParameter(“pwd”);
String page=mr.getParameter(“page”);
String no=mr.getParameter(“no”);
String filename=mr.getFilesystemName(“upload”);
DataBoardVO vo=new DataBoardVO();
vo.setNo(Integer.parseInt(no));
vo.setName(name);
vo.setSubject(subject);
vo.setContent(content);
vo.setPwd(pwd);
String db_pwd=DataBoardDAO.databoardGetPwd(Integer.parseInt(no));
String res=””;
if(db_pwd.equals(pwd)){
res=”YES”;
DataBoardVO dbvo=DataBoardDAO.databoardUpdateData(Integer.parseInt(no));
if(filename==null){
if(dbvo.getFilesize()==0){
//파일이 없는 글이면
vo.setFilename(“”);
vo.setFilesize(0);
}
else{
//파일이 그대로 있는 글이면 파일 유지
vo.setFilename(dbvo.getFilename());
vo.setFilesize(dbvo.getFilesize());
}
}
else{
//업로드를 했었으나, 새로운 파일을 올렸을 경우.
//1)새로운 파일을 올림.
vo.setFilename(filename);
File file=new File(path+”\\”+filename);
vo.setFilesize((int)file.length());
//2)기존 파일 삭제
File delFile=new File(path+”\\”+dbvo.getFilename());//기존 파일을 지운다.
delFile.delete();//파일삭제
}
//UPDATE
DataBoardDAO.databoardUpdate(vo);
}
else{
res=”NO”;
}
model.addAttribute(“res”, res);
model.addAttribute(“page”, page);
model.addAttribute(“no”, no);
return “databoard/update_ok”;
}