Возврат при загрузке файла Spring MVC - 415 неподдерживаемый тип носителя - PullRequest
0 голосов
/ 30 января 2019

Я пишу веб-сервис для загрузки файла изображения / видео на сервер.Каждый раз, когда я вызываю свой веб-сервис загрузки от почтальона, он возвращает 415 Неподдерживаемый тип носителя .Вот что я сделал.

В моем контроллере:

@POST
@Path("/upload")
@Produces(MediaType.MULTIPART_FORM_DATA)
public Response upload(@RequestParam("file") MultipartFile files) {
    Response.ResponseBuilder rb;

    rb = Response.status(Response.Status.OK);
    rb.entity(new ResponseWrapper<String>(SUCCESS, ""));
    return rb.build();
}

контекст приложения:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="10000000"/>
</bean>

Я уже добавил commons-fileupload-1.2.2.jar & mimepull.jar

Когда я звоню в веб-сервис, я получаю следующий консольный журнал.

    com.sun.jersey.spi.container.ContainerRequest getEntity
SEVERE: A message body reader for Java class org.springframework.web.multipart.MultipartFile, and Java type interface org.springframework.web.multipart.MultipartFile, and MIME media type multipart/form-data; boundary=--------------------------410903058421289672087091 was not found.
The registered message body readers compatible with the MIME media type are:
multipart/* ->
  com.sun.jersey.multipart.impl.MultiPartReaderServerSide
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.EntityHolderReader
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy

Я пробовал много вещей, копая интернет, но все еще не работает.Помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

В предложении есть два изменения:

  1. Измените @produces на @consumes, так как этот API принимает файл multipart/form-data.
  2. Измените @RequestParam на@ RequestPart
0 голосов
/ 30 января 2019

попробуйте установить тип содержимого в следующем формате

rb.type(MediaType.TEXT_PLAIN)

изменить тип носителя в соответствии с вашими потребностями.text_plain, как указано в примере выше, должно быть установлено text/plain

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...