Spring 3 / Square Retrofit - MultipartParams但没有MultipartFiles

时间:2013-04-15 22:47:04

标签: android spring rest spring-mvc file-upload

我设置了以下控制器:

@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中的一个错误?

1 个答案:

答案 0 :(得分:1)

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