Spring boot Webservice对象和多部分

Spring boot Webservice对象和多部分,spring-boot,request,multipart,Spring Boot,Request,Multipart,我想用to param创建一个webservice,一个对象用户和另一个多部分来接收文件 @RequestMapping(value = "/signUpOrUpdateAvatar", method = RequestMethod.PUT, headers = "content-type=multipart/form-data") public User signUpAvatar(@RequestHeader HttpHeaders header, @RequestPart("use

我想用to param创建一个webservice,一个对象用户和另一个多部分来接收文件

@RequestMapping(value = "/signUpOrUpdateAvatar", method = RequestMethod.PUT, headers = "content-type=multipart/form-data")
    public User signUpAvatar(@RequestHeader HttpHeaders header,  @RequestPart("user")  User user,
            @RequestPart("file") MultipartFile file) throws LogicBusinessException {
        logger.info(Thread.currentThread().getStackTrace()[1].getMethodName()); 
        //TODO call others methods
        return userRet;
    }
当我尝试时,会出现以下错误:

    {
  "timestamp": 1492500929835,
  "status": 400,
  "error": "Bad Request",
  "exception": "org.springframework.web.multipart.support.MissingServletRequestPartException",
  "message": "Required request part 'file' is not present",
  "path": "/signUpOrUpdateAvatar2"
}

在java配置中添加以下bean

@Bean
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver cmr = new CommonsMultipartResolver();
    cmr.setMaxUploadSize(10000000);
    return cmr;
}

您可能正试图通过另一个线程获取文件数据。尝试使用具有@MultipartConfig完整注释的同一线程,并在@Bean中使用StandardServletMultipartResolver而不是CommonsMultipartResolver。

您需要一个rest API,它接受两个参数,一个是多部分对象,另一个是某个参数。我已经实施了Rest服务,可能满足了您的需要。

@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA)
    public URL uploadFileHandler(@RequestParam("name") String name,
                                 @RequestParam("file") MultipartFile file) throws IOException {
/***
//Your business logic
/***

}

祝您好运。

您需要@RequestHeader的第一个参数吗。你能把它移走并给我一个建议吗try@CrazyMac同样的错误那么从前端推送文件的方式可能是错误的。您是如何从前端调用此服务的?文件参数是如何调用的passed@CrazyMac我使用的是swagger,但对于用户,但对于用户,我认为它是一个json,您是否正确构建了多部分请求?在这里查看Mozilla教程,您是否缺少边界或其他内容?这有帮助!但别忘了在依赖项中添加
commons fileupload
。而且
maxUploadSize
不是强制性的。