2017-10-09 5 views
0

Je développe une méthode POST qui doit recevoir un fichier Excel, mais j'ai quelques problèmes. Ceci est mon codeProblèmes JAX-RS lors du chargement de fichier Excel avec POST

@Path("/rest") 
public class RestManager{ 
    [...] 

    @Path("/uploadFile") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    @POST 
    public Response uploadFile(FormDataMultiPart multipart){ 
     [...] 
    } 
} 

Quand j'appelle l'API, sur le côté serveur je l'erreur suivante:

ott 09, 2017 4:58:48 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom 
GRAVE: MessageBodyReader not found for media type=multipart/form-data, type=class com.sun.jersey.multipart.FormDataMultiPart, genericType=class com.sun.jersey.multipart.FormDataMultiPart. 

Dans mon web.xml, j'ai ajouté le code suivant:

<init-param> 
    <param-name>jersey.config.server.provider.classnames</param-name> 
     <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value> 
    </init-param> 

Je cours sur Tomcat v7.0 et j'ai ajouté jersey-multipart-1.18 et mimepull-1.9.3 pour gérer les données Multipart.

La réponse de mon client obtient 415 Type de support non pris en charge, mais dans le code j'utilise pour envoyer la requête I pour la requête 'Content-Type': 'multipart/form-data' en conséquence avec l'annotation @Consumes. Est-ce que quelqu'un peut me donner un indice pour comprendre où est le problème?

Répondre

1

Vous utilisez le mauvais FormDataMultiPart. Celui que vous utilisez est de jar 1.x Jersey, mais vous devriez utiliser celui de Jersey 2.x. Le pot est jersey-media-multipart. Une fois que vous avez ajouté ce fichier jar et supprimé le fichier jar 1.x, le nom du package du fichier FormDataMultiPart sera différent. Vous devrez l'importer de org.glassfish.jersey.multipart.

Autre chose, selon la version Jersey (mineure) que vous utilisez et la version jersey-media-multipart que vous utilisez, la version mimepull sera également différente. Découvrez this link et cliquez sur la version que vous utilisez. Puis faites défiler jusqu'à "Compiler les dépendances". Vous verrez mimepull. C'est la version dont vous aurez besoin qui est compatible avec la version jersey-media-multipart que vous utilisez.