在泽西岛找不到@FormDataParam 2.17

我对Web服务很陌生,所以我从基本示例开始。这个与文件上传有关。我正在为非专家开发人员使用最新(2.17)版本的泽西岛捆绑包。它指出:

捆绑包包含 JAX-RS 2.0 API jar、所有核心 Jersey 模块 jar 以及所有必需的第三方依赖项

.问题是我无法编译这部分:

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) {
    String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();
    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);
    String output = "File uploaded to : " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}

似乎在泽西岛2.17捆绑包中不存在,尽管文档说它存在。2.17 捆绑包是否不完整?如何解决此问题?@FormDataParam


答案 1

捆绑包仅包括核心模块(及其依赖项)。不幸的是,Multipart不是核心的一部分。您还需要此依赖项 (Maven)

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

如果你没有使用Maven,据我所知,这个工件只有一个其他依赖项(尚未包含在捆绑包中),它是.mimepull-1.9.3

您可以在下面下载这两个项目


答案 2

您必须从 https://mvnrepository.com/ maven 存储库下载以下依赖项Maven 存储库

<!-- https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-multipart -->
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.31</version>
</dependency>

它不是弹簧靴-起动机-球衣的一部分

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
    </dependency>