2023.09.21 - [JSP] - [JSP] 파일 다운로드
fileUploadPro에
다운로드(JSP):<a href="fileDownload.jsp?fileName=<%=fileName1%>"><%=fileName1 %></a>
한 줄 추가하고
file >> fileDownload.jsp 파일 생성해서 이동~
<aside> ⏳ 다운로드 동작
- 서버에 업로드되는 폴더 찾음
- 서버에 업로드되는 폴더
- 서버안에 들어있는 업로드 폴더 위치(realPath) </aside>
전달정보 저장
String fileName = request.getParameter("fileName");
서버에 업로드되는 폴더
String savePath = "upload";
서버안에 들어있는 업로드 폴더 위치(realPath)
프로젝트 정보를 가져오기
ServletContext CTX = getServletContext();
업로드 폴더의 실제 위치정보 가져오기
String downloadPath = CTX.getRealPath(savePath);
System.out.println("downloadPath: " + downloadPath);
최종적으로 다운로드할 파일의 위치 가져오기
String dFilePath = downloadPath+"\\\\"+fileName;
System.out.println("dFilePath: " + dFilePath);
console창
downloadPath: C:\\eclipse_jsp\\JSP\\workspace_JSP7\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\JSP7\\upload
dFilePath: C:\\eclipse_jsp\\JSP\\workspace_JSP7\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\JSP7\\upload\\null
데이터 전송 배열(버퍼)
4KB씩 데이터 읽기
byte[] b = new byte[]; // 4096byte = 4*1024 = 4KB씩 데이터를 읽겠다!
파일을 열어서 읽을 수 있는 객체
FileInputStream fis = new FileInputStream(dFilePath); // 열어서 가져올 파일의 경로
MIME 타입 설정
String mimeType = getServletContext().getMimeType(dFilePath);
if(mimeType==null) {
mimeType = "application/octet-stream";
}
System.out.println("mimeType: "+mimeType);
응답할 페이지의 타입을 mimeType으로 설정 (각 타입별 준비작업)
response.setContentType(mimeType);
// 실행하는 결과의 내용의 타입을 mimeType으로 설정하겠다!
➡️이 코드를 실행하는 코드와 같음
실행하는 결과의 내용의 타입을 mimeType으로 설정하겠다!
인코딩
String agent = request.getHeader("User-Agent"); // 대소문자 구별
ie를 사용하는 경우 체크
boolean ieBrowser = (agent.indexOf("MSIE") > -1) || (agent.indexOf("Trident") > -1);
// indexOf() : 문자열 안에 특정 값이 있는지 확인해주는 메서드
// 있으면 t, 없으면 f
if(ieBrowser) {
//true - ie일때
fileName = URLEncoder.encode(fileName,"UTF-8").replaceAll("\\\\+","%20");
} else {
// false - ie 아닐때
fileName = new String(fileName.getBytes("UTF-8"),"iso-8859-1");
}
전체코드의 의미 : agent 안에 MSIE나 Trident가 있으면 ieBrowser값이 t가 된다.
'JSP·Servlet' 카테고리의 다른 글
[JSP] JDBC - update (0) | 2023.09.21 |
---|---|
[JSP] JDBC (0) | 2023.09.21 |
[JSP] 파일 다운로드 기초편 (0) | 2023.09.21 |
[JSP] 파일 업로드 (0) | 2023.09.21 |
[JSP] 쿠키(Cookie) (0) | 2023.09.18 |