升级到Spring5中断了RestTemplate多部分文件上载
我从Spring4.3.16升级到Spring5.0.7。当尝试使用restTemplate上传文件时,我开始收到一个“400-错误请求””。在搞乱行为之后,我注意到的唯一区别是从交换调用中删除requestEntity,错误(错误请求)消失了,但是它失败了,因为不存在要上载的文件 任何帮助都将不胜感激 客户:升级到Spring5中断了RestTemplate多部分文件上载,spring,upload,resttemplate,multipart,httpentity,Spring,Upload,Resttemplate,Multipart,Httpentity,我从Spring4.3.16升级到Spring5.0.7。当尝试使用restTemplate上传文件时,我开始收到一个“400-错误请求””。在搞乱行为之后,我注意到的唯一区别是从交换调用中删除requestEntity,错误(错误请求)消失了,但是它失败了,因为不存在要上载的文件 任何帮助都将不胜感激 客户: public <T> ResponseEntity<T> uploadMultipartFile(String requestParamName, byt
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);
}
看起来Apache正在抱怨请求主体:
[Wed Jul 18 11:02:29.705758 2018][:错误][pid 1313:tid
140177850750720][client]ModSecurity:使用拒绝访问
代码400(第2阶段)。需要将“eq 0”与“REQBODY_ERROR”匹配。
[文件“/etc/modsecurity/modsecurity.conf”][line“54”][id“200001”]
[msg”无法分析请求正文。“][data”多部分:无效
C-T中的边界(字符)。“][严重性”严重性][主机名
“”][uri/“不间断/文档上载/多线程加载”]
[唯一_id“w09whx8aaaaaaauhs7iaaabi”]
@RequestMapping("/multipleUpload")
public ModelAndView multipleUpload(HttpServletRequest request, HttpServletResponse response,
@RequestParam(value = "files", required = false) MultipartFile[] files,
@ModelAttribute("document") Document document,
BindingResult result) {}