[Web] Day11 - 파일 업로드 / 다운로드

sue·2024년 1월 18일

📒국비학원 [Web]

목록 보기
13/21
post-thumbnail

파일 업로드 / 파일 다운로드

1. ✅ 파일 업로드

  • 파일 (업로드)은 별도의 공간에 따로 하드디스크 안에 저장해놈 DB는 그 별도의 공간에 저장함

  • 파일의 정보를 읽어서 우리가 그 정보를 DB에 넣어줘야하고, 그 DB에 잇는 정보를 LIST로 리다이렉트 시켜서 추출할 수 있게 함


✏️ Test1.

💻 입력

넘어온 파일의 정보를 읽어오는 header
: header (크기나 안에 세부정보)


⭐ FILEINPUTSTREAM (FIS) :

  • 파일을 만드는 유일한 클래스!!
  • 파일 업로드하려면 파일을 메모리상에 읽어냄

⭐ FileOutputStream(FOS) : 파일 읽어오는거


servlet으로 파일업로드 하는 방법

  • ② 서블릿에서 파일 업로드 해주는 라이브러리 - 드래그


📌 test1.jsp -> test3.jsp

test1에서 선택한 파일을 test3에서 받는 법

  • test1에서 넘어온 파일을 넘겨주려면 어디엔가 저장을 해야하는데, 그 위치 :
    String root = pageContext.getServletContext().getRealPath("/");

⬇️test1.jsp

파일 업로드 하는 디자인


풀 주소 = (ServletContext)같음


📌 폴더 만드는 방법

(1) 루트 안에 폴더 만드는 법

(2) 다이렉트로 만드는 법


✔️ 파일이 mkdirs()로 인해 실제로 진짜 루트에 만들어진 걸 확인할 수 있음


파일 올릴때마다 MultipartRequest(mr)에 저장됨

DB엔 SaveFileName과 OriginalFileName 각각 같이 저장되어있어야 함


✅ 파일 정보 추출하는 법


dto.setSubject(mr.get~~~)

① DB 테이블 생성

② DTO/DAO 생성

write.jsp에서
<form action="<%=cp%>/file/write_ok.do" method="post" enctype="multipart/form-data">

파일 업로드할거라고 잊지말고! 말해주기!

fileTestServlet 에서 폴더생성 완료하기

fileTestServlet 에서 창 띄워보기

fileTestServlet 에서 파일 업로드 + DB에 파일 정보 저장하는 코드 작성

⑥ 잘 넘어가는지 확인

  • DB에도 잘 저장되는걸 볼 수 있음

write.jsp에서 스크린샷을 넣어보면 list.do / 루트 / DB에도 잘 들어감

FileTestDAO에서 페이징처리를 위해 getList()메서드에 RNUM추가 + 전체 데이터 개수 가져와야 함



⑧ 삭제


✅ 삭제

  • 업로드는 프레임워크마다 다르지만, 다운로드는 다같음.( -> 그래서 별도의 클래스로 따로 만들어서 필요할 때 가져다 쓸 예정)

① 공통으로 쓸 클래스 하나 만들기

② static 메서드 하나 만들기


삭제하면 루트안에도 db안에도 삭제 된걸 볼 수 있음

✅ 다운로드 하는 방법


이 주소로 넘어가야함

다운됨

파일이 폴더에선 삭제가 됐는데, 서버에는 아직 링크는 살아있을 때

  • 자바스크립트를 통해 이렇게 alert쓸 수 있음

한글이 깨지면!!
fileManger.java에서

originalFileName = new String(originalFileName.getBytes("euc-kr"),"ISO-8859-1");

한글안깨지게 설정 꼭! 해줘야함




페이징 고정 (pageNum받음)


📌 납품하는 방법

상대회사의 톰캣서버는

  • 이런 화면이 뜰거임

0개의 댓글