본문 바로가기

jsp

파일 다운로드: 웹 페이지에서 파일을 다운로드하는 방법을 다루는 예제.

반응형

웹 페이지에서 파일 다운로드 기능은 사용자가 서버에 저장된 파일을 자신의 로컬 시스템으로 다운로드할 수 있게 하는 중요한 기능입니다. 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에서 파일을 읽고 쓸 때 사용하는 스트림입니다.
반응형