본문 바로가기

컴퓨터공학/JSP | Servlets | JDBC

JSP> 파일 업로드/다운로드 기능 넣는 법

파일 업로드 페이지 구현하기

mysql command line으로 접속하여 연습을 위한 새로운 스키마와 

테이블을 만들어준다.. 그리고 위 그대로 사용하면 안되고 마지막에 쉼표 빼줘야 함..

 

라이브러리를 다음과 같이 넣어주고 패키지와 클래스를 만들어 준다.

데이터 객체는 무난하게 만들어준다...

데이터베이스 접근 객체는 다음과 같이 된다...

패스워드는 각자 자신의 비밀번호를 입력해주자..

 

 

 

 

 

이제는 업로드 되는 파일 경로에 폴더를 만들어야 한다...

 

프로젝트 경로를 들어가는 방법은 프로젝트 오른쪽 클릭 후

properties 에서 location 옆 아이콘을 클릭하면 된다...

 

 

모든 프로젝트에 대한 정보를 다루고 있는 .metadata 폴더로 간다..

 

티스토리 좀 이상한게 경로를 넣으면 이상한 링크가 나온다..

암튼 위와 같이 현재 프로젝트 폴더에 가서 폴더를 만들어준다.

 

 

이제 uploadAction.jsp를 만들어 주자..

 

aplication 내장 객체는 프로젝트의 자원을 관리하는 객체이다.

서버의 실제 프로젝트 경로에서 자원을 찾을 때 많이 사용한다.

 

 

 

 

 

 

 

파일 다운로드 페이지 구현하기

인덱스 html 에서 다운로드 페이지를 가는 링크를 달아준다.

fileDownload.jsp 이다.

서버에 있는 파일을 표현한다..

 

contextPath는 프로젝트 명을 의미한다. 

downloadAction 서블렛 이름을 적어주고

?file은 파라미터 값을 의미한다.

파라미터 값은 파일이름을 UTF-8 인코딩하여 넣어준다.

링크 이름은 파일이름으로 해주면 끝..

 

 

contextPath가 뭔지 궁금해서 검색해봤는데 다 똑같은 말만하고 별로 도움이 안됐다.

그러다 우연히 발견한 블로그에서 좋은 내용이 있어서 첨부

JSP : URI/ ContextPath/ URL/ServletPath의 차이점 (tistory.com)

 

JSP : URI/ ContextPath/ URL/ServletPath의 차이점

 servlet을 만들던중 URL, URI, ContextPath, ServletPath의 차이가 뭔가 싶어서 콘솔창에 일단 찍어보기로 했다. 1. URI System.out.println("URI : " + request.getRequestURI()); ----> /JSP/member/list.do :..

w94dev.tistory.com

 

 

 

 

 

이것은 서블릿의 전체 코드를 나타낸다..

다운로드 기능을 작성하였다.

하나하나 보도록 하자..

 

mimeType 어떠한 데이터를 주고받을지에 대한 정보를 담는 것

response 는 사용자가 서버에 요청하고 응답을 받는다.

octet-stream 이진 파일을 주고 받을 때 사용

실제로 다운로드 받을 downloadName

접속한 유저의 브라우저에 따라서 다르게 처리한다는 뜻이다.

MISE는 익스플로어를 의미한다. 

만약에 익스플로어가 아니면 fileName을 UTF-8 방식으로 인코딩하고 8859_1 형식으로 변환한다는 뜻이다.

 

 

헤더의 content-Disposition 속성에 attchment한다.

방금 인코딩을 수행한 downloadName을 붙인다는 뜻

헤더 처리 끝

response 패킷에 실제 데이터를 담아야 한다....

 

데이터가 담겨져 있는 fileInputStream 에 1024 바이트 단위로 나눠서 변수에 둔다.

변수에 있는 나뉘어진 데이터를 servletOuputStream에 쓴다.

데이터를 보내고 종료한다.