Вопрос
Разработка функции загрузки файлов с помощью RESTEasy, см. Следующий пример RESTEasy multipart file 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 } }
Выше пример загрузки файла может скомпилировать без каких-либо ошибок. Тем не менее, он запрашивает следующее страшное сообщение об ошибке во время загрузки файла в развернутую службу.
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" )
Решение
RESTEasy не может найти программу чтения тела сообщения для « multipart/form-data », она должна быть включена в « resteasy-multipart-provider.jar ».
Чтобы исправить это, убедитесь, что выполнены следующие 2 шага.
1. Объявлен resteasy-multipart-провайдер
Убедитесь, что объявлено « resteasy-multipart-provider.jar ». Смотрите пример Maven:
Файл: 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
Для проекта веб-приложения в Eclipse необходимо использовать следующую команду, чтобы убедиться, что все зависимости развернуты правильно.
mvn eclipse:eclipse -Dwtpversion=2.0
После этого проверьте ваш Eclipse « Web Deployment Assembly », убедитесь, что все необходимые зависимости включены.
-
Помните -Dwtpversion = 2.0 ** В Eclipse (веб-проект) классический «mvn eclipse: eclipse`» не может развернуть все зависимости, вместо этого вы должны использовать «mvn eclipse: eclipse -Dwtpversion = 2.0`«.
ссылка://тег/jax-rs/[jax-rs]ссылка://тег/resteasy/[resteasy]