web-dev-qa-db-fra.com

Impossible de trouver @FormDataParam dans Jersey 2.17

Je suis assez nouveau dans les services Web, j'ai donc commencé avec des exemples de base. Celui-ci concerne le téléchargement de fichiers. J'utilise la dernière version (2.17) du bundle Jersey pour les développeurs non-maven. Il déclare que:

le bundle contient le pot API JAX-RS 2.0, tous les pots du module Jersey de base ainsi que toutes les dépendances tierces requises

. Le problème est que je ne peux pas compiler cette partie:

@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();
}

Il paraît que @FormDataParam n'existe pas dans le bundle Jersey 2.17 bien que la documentation indique que c'est le cas. Le pack 2.17 est-il incomplet? Comment puis-je résoudre ce problème?

21
Rasa

Le bundle comprend uniquement les modules de base (et leurs dépendances). Malheureusement, Multipart ne fait pas partie du noyau. Vous aurez besoin de cette dépendance (Maven) également

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

Si vous n'utilisez pas Maven, d'après ce que je peux dire, cet artefact n'a qu'une seule autre dépendance (qui n'est pas déjà incluse dans le bundle), et c'est mimepull-1.9.3.

Vous pouvez télécharger les deux artefacts ci-dessous

32
Paul Samsotha