Question
Développer une fonctionnalité de téléchargement de fichier avec RESTEasy, voir l’exemple suivant ** pour le téléchargement de fichiers en plusieurs parties RESTEasy:
public class FileUploadForm { private byte[]data; @FormParam("file") public void setData(byte[]data) { this.data = data; } //...code omitted }
@Path("/file") public class UploadFileService { @POST @Path("/upload") @Consumes("multipart/form-data") public Response uploadFile(@MultipartForm FileUploadForm form) { //...code omitted } }
L’exemple de téléchargement de fichier ci-dessus est capable de compiler sans erreur. Cependant, le message d’erreur suivant s’affiche lorsque le fichier est téléchargé sur le service déployé.
HTTP Status 500 - Bad arguments passed to public javax.ws.rs.core.Response com.mkyong.rest.UploadFileService.uploadFile(com.mkyong.rest.FileUploadForm) ( org.jboss.resteasy.spi.BadRequestException org.jboss.resteasy.spi.BadRequestException: Could not find message body reader for type: class com.mkyong.rest.FileUploadForm of content type: multipart/form-data; boundary="---------------------------98942870323811" )
Solution
RESTEasy ne peut pas trouver le lecteur de corps du message pour « multipart/form-data », il devrait être inclus dans « resteasy-multipart-provider.jar ».
Pour résoudre ce problème, assurez-vous que les 2 étapes suivantes sont cochées.
1. Déclaré resteasy-multipart-provider
Assurez-vous que « resteasy-multipart-provider.jar » est déclaré. Voir l’exemple Maven:
Fichier: pom.xml
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-multipart-provider</artifactId> <version>2.2.0.GA</version> </dependency>
2. mvn eclipse: eclipse -Dwtpversion = 2.0
Pour le projet d’application Web dans Eclipse, vous devez utiliser la commande suivante pour vous assurer que toutes les dépendances sont déployées correctement.
mvn eclipse:eclipse -Dwtpversion=2.0
Après cela, vérifiez votre « Assemblée de déploiement Web » Eclipse, assurez-vous que toutes les dépendances requises sont incluses.
-
Rappelez-vous -Dwtpversion = 2.0 ** Dans Eclipse (projet Web), le classique «` mvn eclipse: eclipse` »ne peut pas obtenir toutes les dépendances déployées. Vous devez plutôt utiliser«
mvn eclipse: eclipse -Dwtpversion = 2.0
».
lien://tag/jax-rs/[jax-rs]lien://tag/resteasy/[resteasy]