2015-06-02 7 views
1

У меня есть REST-служба определяется как последуйтеMultipart с Spring загрузки службы Rest

@RequestMapping(value = "/{userId}/profileimage/{language}", method = RequestMethod.PUT) 
public String uploadProfileImage(@PathVariable String userId, @RequestParam MultipartFile file, @PathVariable String language) throws IOException { ...} 

и определил многослойную фильтр

@Bean 
public FilterRegistrationBean multipartFilter() { 
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean(); 
    filterRegBean.setFilter(new MultipartFilter()); 
    List<String> urlPatterns = new ArrayList<String>(); 
    urlPatterns.add("/*"); 
    filterRegBean.setUrlPatterns(urlPatterns); 
    return filterRegBean; 
} 

, а также multipartConfigElement

@Bean 
public MultipartConfigElement multipartConfigElement(){ 
    MultipartConfigElement config = new MultipartConfigElement(""); 
    return config; 
} 

Но я все еще получаю следующее исключение, когда я отправляю многостраничное сообщение службе REST:

Servlet.service() для сервлета [диспетчерServlet] в контексте с пути [/ dev] отказался от исключения [Обработка запроса не удалась; вложенное исключение составляет java.lang.IllegalArgumentException: Ожидаемая MultipartHttpServletRequest: сконфигурировано MultipartResolver]

Услуга защищена яровой безопасности (как побочной информации) и Spring Загрузочный входит следующее при запуске

Добавлен существующий фильтр-инициализатор bean 'multipartFilter'; порядок = 2147483647, ресурс = путь к классам ресурсов [ком/фл/Wir/конфигурация/MvcConfigurations.class]

Mapping фильтра: 'multipartFilter' в URLs: [/ *]

MultipartAutoConfiguration - @ConditionalOnClass классов найден : javax.servlet.Servlet, org.springframework.web.multipart.support.StandardServletMultipartResolver, javax.servlet.MultipartConfigElement (OnClassCondition) - соответствует (OnPropertyCondition)

DispatcherServletAutoConfiguration.DispatcherServletConfiguration # multipartResolver - @ConditionalOnMissingBean (имена: multipartResolver Searc hStrategy: all) найдено следующее [multipartResolver] (OnBeanCondition)

Любая идея, почему я все еще получаю исключение? (с использованием Spring-Boot 1.2.3.RELEASE)

+0

Не указывайте те, которые просто добавляют [соответствующие свойства] (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-multipart-file-upload-configuration) к 'application.properties'. Также загрузка файлов и PUT не будут работать, только для POST. –

ответ

3

Вы делаете это способ сложным, чтобы позволить загрузку файлов просто настроить его правильно, используя properties в application.properties.

multipart.enabled=true 

И убедитесь, что у вас есть spring-webmvc на вашем пути к классам (судя по аннотации используется у вас уже есть).

Однако есть еще одна вещь, и это то, что загрузка файла будет only work for POST просит не других, поэтому PUT не будет работать.

+0

Главной проблемой было то, что я использовал PUT. отдых работал из коробки, но сообщение об ошибке не помогло мне это выяснить. – Adrian

+1

для поддержки PUT http://i-proving.com/2015/05/14/submitting-a-multipart-request-multipartform-data-using-put-and-spring-boot/ – arterzatij

Смежные вопросы