spring – 需要RestTemplate MultipartFile参数’file’不存在

我有一个Spring控制器,定义如下:

@RequestMapping(method = RequestMethod.POST, value = "/upload")
    @ResponseBody
    public void handleFileUpload2(@RequestParam("file") MultipartFile file){

当我使用邮递员时,我的请求成功了.当我使用RestTemplate从另一个Spring服务发出请求时,我收到以下错误:

{"timestamp":1475579425804,"status":400,"error":"Bad Request","exception":"org.springframework.web.bind.MissingServletRequestParameterException","message":"Required MultipartFile parameter 'file' is not present","path":"/upload"}

以下是我使用RestTemplate发出请求的方法.

public void uploadFile(MultipartFile file, String url) {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);
    MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();

    body.add("file", new ByteArrayResource(file.getBytes()));

    RestTemplate restTemplate = new RestTemplate();
    HttpEntity requestEntity = new HttpEntity(body, headers); 
    restTemplate.exchange(url, method, requestEntity, String.class);
}

我无法弄清楚我在这里做错了什么. This问题似乎表明你需要添加一些xml才能使它正常工作,但由于它适用于Postman,我相信实际问题与我如何使用RestTemplate进行其余调用有关.

如果我打印出requestEntity,我会得到以下内容:

<{file=[resource loaded from byte array]},{Content-Type=[multipart/form-data]}>

我正在使用spring-web 4.1.4.RELEASE

最佳答案
<beans:bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- setting maximum upload size -->
        <beans:property name="maxUploadSize" value="100000" />
    </beans:bean>

确保您已在Spring配置文件中添加此代码,它可能适合您.

转载注明原文:spring – 需要RestTemplate MultipartFile参数’file’不存在 - 代码日志