[java] Java Jersey에서 멀티파트 (multipart) 요청을 처리하는 방법은?
Java Jersey는 멀티파트 요청을 처리하기 위한 간단하고 강력한 기능을 제공합니다. 이를 통해 파일 업로드와 같은 멀티파트 요청을 처리할 수 있습니다.
다음은 Java Jersey에서 멀티파트 요청을 처리하는 방법입니다:
- 의존성 추가:
해당 기능을 사용하기 위해
jersey-media-multipart
의존성을 프로젝트에 추가해야 합니다. 이는 Maven 또는 Gradle을 사용하는 경우 아래와 같이 추가할 수 있습니다:
Maven:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.33</version>
</dependency>
Gradle:
implementation 'org.glassfish.jersey.media:jersey-media-multipart:2.33'
- Resource 클래스 설정:
멀티파트 요청을 처리할 Resource 클래스에서
@POST
어노테이션 뒤에@Consumes(MediaType.MULTIPART_FORM_DATA)
어노테이션을 추가합니다. 또한, 매개변수로FormDataMultiPart
클래스를 받아올 수 있도록 설정합니다.
@Path("/upload")
public class UploadResource {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response handleUpload(FormDataMultiPart formDataMultiPart) {
// 멀티파트 요청 처리 로직 작성
}
}
- 멀티파트 요청 처리:
handleUpload
메서드에서는FormDataMultiPart
인스턴스를 이용하여 멀티파트 요청을 처리할 수 있습니다. 다음은 주요 기능의 예시입니다:
- 단일 파일 업로드: ```java FormDataBodyPart filePart = formDataMultiPart.getField(“file”); InputStream fileInputStream = filePart.getValueAs(InputStream.class); String fileName = filePart.getFormDataContentDisposition().getFileName();
// 파일 처리 로직 작성
- 다중 파일 업로드:
```java
List<FormDataBodyPart> fileParts = formDataMultiPart.getFields("file");
for (FormDataBodyPart filePart : fileParts) {
InputStream fileInputStream = filePart.getValueAs(InputStream.class);
String fileName = filePart.getFormDataContentDisposition().getFileName();
// 파일 처리 로직 작성
}
- 기타 필드 값 조회:
String fieldValue = formDataMultiPart.getField("fieldName").getValue();
- 응답 반환:
요청 처리 후 적절한 응답을 반환합니다. 이는
Response
객체를 통해 가능하며, 상태 코드, 헤더 및 본문을 포함할 수 있습니다.
return Response.ok().build(); // 성공 응답 반환
return Response.status(Response.Status.BAD_REQUEST).entity("올바르지 않은 요청").build(); // 실패 응답 반환
이제 멀티파트 요청을 처리하기 위한 Java Jersey의 기능을 사용할 수 있습니다. 위의 방법을 따라서 멀티파트 요청을 처리하는 코드를 작성해보세요.