Spring boot Webservice对象和多部分
我想用to param创建一个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
@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
不是强制性的。