Обновление до Spring 5 прервало загрузку RestTemplate MultipartFile
Я обновился с весны 4.3.16 до весны 5.0.7. При попытке загрузить файл с помощью restTemplate я начал получать "400 - Bad Request". После возни с единственной разницей в поведении, которую я заметил, было удаление requestEntity из вызова обмена, и ошибка (неправильный запрос) исчезает, однако происходит сбой, потому что файл отсутствует для загрузки.
Любая помощь будет принята с благодарностью!
Клиент:
public <T> ResponseEntity<T> uploadMultipartFile(String requestParamName, byte[] byteArray, String fileName,
Class<T> responseType) {
ByteArrayResource byteArrayAsResource = new ByteArrayResource(byteArray) {
@Override
public String getFilename() {
return fileName;
}
};
MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add(requestParamName, byteArrayAsResource);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(map, headers);
return getRestTemplate().exchange(buildUriWithVariables(new HashMap<>()), HttpMethod.POST, requestEntity, responseType);
}
И контроллер:
@RequestMapping("/multipleUpload")
public ModelAndView multipleUpload(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "files", required = false) MultipartFile[] files,
@ModelAttribute("document") Document document,
BindingResult result) {}
Похоже, что Apache жалуется на тело запроса:
[Ср. 18 июля 11:02:29.705758 2018] [: ошибка] [pid 1313:tid 140177850750720] [клиент] ModSecurity: доступ запрещен с кодом 400 (этап 2). Требуется совпадение "eq 0" с "REQBODY_ERROR". [file "/etc/modsecurity/modsecurity.conf"] [строка "54"] [id "200001"] [msg "Не удалось проанализировать тело запроса."] [data "Multipart: недопустимая граница в CT (символы)."] [серьезность "КРИТИЧЕСКИЙ"] [имя хоста ""] [uri "/restless/documentUpload/multipleUpload"] [unique_id "W09WhX8AAAEAAAUhs7IAAABI"]