[java] Java Jersey에서 파일 압축을 지원하는 방법은?
Java Jersey를 사용하여 RESTful API를 개발하다보면, 파일 다운로드 등의 기능을 구현해야 할 때가 있습니다. 이때 파일을 압축하여 전송하면 네트워크 대역폭을 절약할 수 있습니다. Java Jersey에서 파일 압축을 지원하기 위해 아래와 같은 방법을 사용할 수 있습니다.
- 응답 헤더를 설정하여 파일 압축을 활성화합니다.
@GET @Path("/download") @Produces("application/zip") public Response downloadFile() { // 파일 다운로드 로직 // 응답 헤더에 파일 압축 설정 return Response.ok(file) .header("Content-Encoding", "gzip") .header("Content-Disposition", "attachment; filename=file.zip") .build(); }
- Java GZIPOutputStream을 사용하여 파일을 압축합니다.
@GET @Path("/download") @Produces("application/zip") public Response downloadFile() { // 파일 다운로드 로직 ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (GZIPOutputStream gzipOut = new GZIPOutputStream(baos)) { // 파일을 gzip 스트림으로 압축 // 파일 내용을 gzipOut에 쓰기 } catch (IOException e) { e.printStackTrace(); } // 압축한 파일을 Response body에 쓰기 return Response.ok(baos.toByteArray()) .header("Content-Encoding", "gzip") .header("Content-Disposition", "attachment; filename=file.zip") .build(); }
위의 방법을 사용하여 Java Jersey에서 파일 압축을 지원할 수 있습니다. 이를 활용하여 파일 전송 시 대역폭을 절약하고 더 빠른 파일 다운로드를 구현할 수 있습니다.
참고 자료: