Frage
Datei-Upload-Funktion mit RESTEasy entwickeln, siehe folgendes Beispiel: RESTEasy-Multipart-Datei-Upload :
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 } }
Das obige Beispiel zum Hochladen von Dateien kann ohne Fehler kompiliert werden. Während des Hochladens der Datei zum bereitgestellten Dienst wird jedoch die folgende beängstigende Fehlermeldung angezeigt.
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" )
Lösung
RESTEasy kann den Nachrichtentextleser für „ multipart/form-data “ nicht finden. Er sollte in „ resteasy-multipart-provider.jar “ enthalten sein.
Um dies zu beheben, vergewissern Sie sich, dass die folgenden 2 Schritte aktiviert sind.
1. Deklarierter Resteasy-Multipart-Provider
Stellen Sie sicher, dass " resteasy-multipart-provider.jar " deklariert ist. Siehe Maven-Beispiel:
Datei: 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
Für ein Webanwendungsprojekt in Eclipse müssen Sie den folgenden Befehl verwenden, um sicherzustellen, dass alle Abhängigkeiten ordnungsgemäß bereitgestellt werden.
mvn eclipse:eclipse -Dwtpversion=2.0
Überprüfen Sie anschließend Ihren Eclipse-Code " Web Deployment Assembly " und stellen Sie sicher, dass alle erforderlichen Abhängigkeiten enthalten sind.
-
Remember -Dwtpversion = 2.0 ** + In Eclipse (Webprojekt) kann der Klassiker "` mvn eclipse: eclipse '' nicht alle Abhängigkeiten bereitstellen, stattdessen sollten Sie '' mvn eclipse: eclipse -Dwtpversion = 2.0` "verwenden. .