웹 페이지에서 파일 다운로드 기능은 사용자가 서버에 저장된 파일을 자신의 로컬 시스템으로 다운로드할 수 있게 하는 중요한 기능입니다. JSP를 사용하여 이를 구현하기 위해, 보통은 서버에 저장된 파일을 읽고 사용자에게 전송하는 스트림을 생성합니다. 아래는 파일 다운로드를 구현하는 두 가지 방법의 예제입니다.
예제 1: 간단한 파일 다운로드
이 예제는 서버에 저장된 특정 파일을 사용자에게 제공합니다.
downloadFile.jsp
<%@ page import="java.io.*,javax.servlet.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
// 파일 경로 설정
String filePath = "c:\\file_directory\\file_name.extension";
File downloadFile = new File(filePath);
FileInputStream inStream = new FileInputStream(downloadFile);
// MIME type 설정
ServletContext context = getServletContext();
String mimeType = context.getMimeType(filePath);
if (mimeType == null) {
mimeType = "application/octet-stream";
}
response.setContentType(mimeType);
response.setContentLength((int) downloadFile.length());
// 파일 다운로드를 위한 응답 헤더 설정
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"", downloadFile.getName());
response.setHeader(headerKey, headerValue);
// 파일을 읽어서 클라이언트에게 전송
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inStream.close();
outStream.close();
%>
관련 전문용어 설명
- MIME type: Multi-purpose Internet Mail Extensions의 약자로, 파일의 포맷을 설명하는 라벨입니다. 웹에서 파일을 전송할 때, 어떤 종류의 데이터가 전송되는지 알려줍니다.
- Content-Disposition: HTTP 헤더 중 하나로, 브라우저에게 받은 콘텐츠가 직접 표시되어야 하는 페이지인지, 아니면 다운로드해야 하는 파일인지 알려줍니다.
- FileInputStream & OutputStream: Java에서 파일을 읽고 쓸 때 사용하는 스트림입니다.
'jsp' 카테고리의 다른 글
쿠키 기반 로그인: 쿠키를 활용한 간단한 로그인 시스템 구현 예제. (0) | 2023.12.25 |
---|---|
Ajax 요청 처리: Ajax를 사용하여 비동기 요청을 처리하는 JSP 예제. (0) | 2023.12.25 |
이메일 전송: JSP를 사용하여 이메일을 전송하는 예제. (0) | 2023.12.25 |
데이터 검색 및 페이징: 데이터베이스에서 데이터를 검색하고 페이징 처리하는 방법을 배우는 예제. (0) | 2023.12.25 |
이미지 업로드: 웹 페이지에서 이미지를 업로드하고 표시하는 방법을 다루는 예제. (0) | 2023.12.25 |