我设置了以下控制器:
@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 发布到这个控制器时:
@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);
我得到一个 MultipartHttpServletRequest,它具有“avatar”参数,具有正确的文件名和所有内容,但没有多部分文件。
我做错了什么会导致我得到 MultipartParams 但没有 MultipartFiles?我尝试了各种其他 TypedOutput 格式,但得到了相同的结果。如果我从 Postman(一个 Chrome 插件)点击同一个控制器,一切都会按预期工作,让我认为这是 Retrofit 中的错误?