Использую android устройство и сервер на spring mvc + maven Пытаюсь выслать данные + файл на сервер при помощи RestTeamplate. С просто данными все красиво вышло, а вот с файлом проблемы. Руководствуюсь вот этим туториалом
Клиент:
protected AnotherPostDTO doInBackground(Void... params) {
Resource resource = new ClassPathResource("res/drawable/bbb.png");
formData = new LinkedMultiValueMap<String, Object>();
formData.add("owners_id", "1");
formData.add("file", resource);
try {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, requestHeaders);
ArrayList<HttpMessageConverter<?>> converters = new ArrayList<HttpMessageConverter<?>>(Arrays.asList(new MappingJackson2HttpMessageConverter(), new FormHttpMessageConverter()));
RestTemplate restTemplate = new RestTemplate(converters);
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
restTemplate.getMessageConverters().add(new FormHttpMessageConverter());
return restTemplate.postForObject(Constants.URLs.UPLOAD_FILE, requestEntity, AnotherPostDTO.class);
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
return post;
}
Сервер:
@RequestMapping(value = "upload", method = RequestMethod.POST, headers = "Content-Type=multipart/form-data")
public @ResponseBody ImgPost handleFormUpload(@RequestParam("owners_id") String owners_id, @RequestParam("file") MultipartFile file) {
System.out.println("file upload");
ImgPost post = new ImgPost();
if (!file.isEmpty()) {
byte[] bytes = null;
try {
bytes = file.getBytes();
} catch (IOException e) {
System.out.println("error processing uploaded file");
}
return post; //ok
} else {
return post;//fail
}
}
Бин:
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setMaxFileSize("128KB");
factory.setMaxRequestSize("128KB");
return factory.createMultipartConfig();
}
Ошибка у клиента:
W/RestTemplate: POST request for "http://192.168.0.250:8081/server/upload" resulted in 400 (Bad Request); invoking error handler
E/ContentValues: 400 Bad Request org.springframework.web.client.HttpClientErrorException: 400 Bad Request
Виртуальный выделенный сервер (VDS) становится отличным выбором
Одним моим коллегой был обнаружен баг в Stream API: если создавать Map из stream() при помощиcollect(Collectors
Есть проблемаКогда размер экрана меньше 1023px, то фильтры скрываются и увидеть их можно щелкнув по кнопке "Filters"