Spring 3/Square Retrofit - MultipartParams but no MultipartF



我设置了以下控制器:

@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);

我得到一个MultipartHttpServletRequest,它有"avatar"参数,有正确的文件名和一切,但没有多部分文件。

我做错了什么,会导致我得到MultipartParams,但没有MultipartFiles?我已经尝试了各种其他的TypedOutput格式,但我得到了相同的结果。如果我从邮递员(一个Chrome插件)击中相同的控制器,一切都如预期的那样工作,让我认为这是Retrofit的一个bug ?

这是由于Retrofit中的一个错误,该错误已于今天修复。上面的代码现在可以将一个文件从Retrofit上传到一个基于Spring的api服务器。

相关内容

最新更新