我设置了以下控制器:
@PreAuthorize("hasAuthority('ROLE_USER')")
@RequestMapping(value = "/me/avatar", method = RequestMethod.POST)
public @ResponseBody boolean setAvatar(Principal principal, MultipartHttpServletRequest request) {
String username = ((User) ((OAuth2Authentication) principal).getPrincipal()).getUsername();
MultipartFile file = request.getFile("avatar");
return Boolean.TRUE;
}
当我使用Square Retrofit POST到此控制器时:
@Multipart
@POST("/user/me/avatar?access_token={access_token}")
void uploadAvatar(@Name("access_token") String accessToken, @Name("avatar") TypedFile image, retrofit.http.Callback<Boolean> callback);
我得到一个具有&#34;头像&#34;的MultipartHttpServletRequest。参数,具有正确的文件名和所有内容,但没有多部分文件。
我做错了会导致我获得MultipartParams但没有MultipartFiles?我尝试了各种其他TypedOutput格式,但得到了相同的结果。如果我从Postman(一个Chrome插件)点击同一个控制器,一切都按预期工作,让我觉得它是Retrofit中的一个错误?
答案 0 :(得分:1)
这是由于Retrofit中的一个错误,该错误已于今天修复。上面的代码现在可以将文件从Retrofit上传到基于Spring的api服务器。