使用jax-rs規范,需要引入spring-boot-starter-jersey包,用於支撐@Path,@GET等jax-rs注解,使用jax-rs規范上傳文件,需要引入jersey-media-multipart包,用於支撐@FormDataParam,FormDataContentDisposition
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
然后需要將接收外部請求的Controller類注冊到ResourceConfig, 將處理上傳文件的MultipartFeature類注冊到ResourceConfig
@Configuration
public class MyJaxrsConfig extends ResourceConfig {
public MyJaxrsConfig() {
super.register(UserService.class);
register(MultiPartFeature.class);
}
}
上傳文件時需要注意的地方:
1.指定接口的消費數據類型為multipart/form-data
2.文件的接收分為2部分: 一部分是描述數據,一部分是輸入流數據,
描述數據用FormDataContentDisposition對象接收,流數據用InputStream對象接收.通過類似於@PathParam綁定注解的@FormDataParam分別將文件數據的兩部分數據綁定到對應的變量上.
@Path("/upload")
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA_VALUE)
void upload(@FormDataParam("file") InputStream inputStream, @FormDataParam("file") FormDataContentDisposition file);