2017-04-10 43 views
2

我想用一个web服务参数,一个对象用户和另一个多部分接收文件。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" 
} 

swagger

+0

你需要的第一个参数@RequestHeader。你可以删除并试一试 – CrazyMac

+0

@CrazyMac同样的错误 –

+0

那么你从前端推送文件的方式可能是错误的。你如何从你的前端调用这项服务,以及如何传递文件参数 – CrazyMac

回答

1

添加以下豆在Java配置

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

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

0

您需要一个其余的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 
/*** 

} 

最好的运气..