[java] Java Jersey에서 파일 업로드 처리하는 방법은?

=====================================================

Java Jersey는 RESTful 웹 서비스를 구축하기 위한 프레임워크로, 파일 업로드도 간편하게 처리할 수 있습니다. 이번 글에서는 Java Jersey에서 파일 업로드를 처리하는 방법에 대해 알아보겠습니다.

  1. 의존성 추가하기

    먼저, 파일 업로드 기능을 사용하기 위해 jersey-media-multipart 의존성을 추가해야 합니다. Maven을 사용한다면 pom.xml 파일에 다음 의존성을 추가합니다.

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.30</version>
</dependency>

Gradle을 사용한다면 build.gradle 파일에 다음 의존성을 추가합니다.

implementation 'org.glassfish.jersey.media:jersey-media-multipart:2.30'
  1. 파일 업로드 API 작성하기

    파일 업로드를 처리하기 위해 먼저 파일 업로드 API를 작성해야 합니다. 다음은 파일 업로드를 처리하는 예제입니다.

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.FormDataParam;

@Path("/upload")
public class FileUploadResource {

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(
            @FormDataParam("file") InputStream fileInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDisposition) {
        
        // 파일 업로드 처리 로직 작성
        
        return Response.status(200).build();
    }
}
  1. 파일 업로드 테스트하기

    위에서 작성한 파일 업로드 API를 테스트하기 위해 클라이언트를 작성합니다. 다음은 Java에서 파일을 업로드하는 코드의 예입니다.

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
import org.glassfish.jersey.media.multipart.file.FileDataBodyPart;

public class FileUploadClient {

    public static void main(String[] args) {
        Client client = ClientBuilder.newClient();
        FileDataBodyPart filePart = new FileDataBodyPart("file", new File("/path/to/file"));
        FormDataMultiPart formDataMultiPart = new FormDataMultiPart();
        formDataMultiPart.bodyPart(filePart);
        
        Response response = client.target("http://localhost:8080/upload")
                .request(MediaType.APPLICATION_JSON)
                .post(Entity.entity(formDataMultiPart, MediaType.MULTIPART_FORM_DATA));

        System.out.println("Response code: " + response.getStatus());
    }
}

위 코드에서 /path/to/file은 업로드 할 파일의 경로로 변경해야 합니다. 또한, 업로드를 수행할 URL을 적절히 수정해야 합니다.

  1. 파일 업로드 실행하기

    위에서 작성한 파일 업로드 API를 실행하기 위해 서버를 실행해야 합니다. 서버는 Java EE 서버이거나, Tomcat과 같은 웹 애플리케이션 서버를 사용할 수 있습니다.

서버가 실행 중이라면 FileUploadResource.java 파일이 있는 패키지 경로를 웹 API의 주소에 추가하여 파일 업로드를 수행할 수 있습니다.

예를 들어, FileUploadResource.java 파일의 패키지 경로가 com.example.api 라면 파일 업로드 주소는 http://localhost:8080/api/upload 가 됩니다.

이제 Java Jersey를 사용하여 파일 업로드를 간편하게 처리할 수 있습니다. 다양한 프로젝트에서 파일 업로드를 구현하고자 할 때 참고하여 사용해보세요!

참고 문서