Jersey我无法在上传文件时授权用户

时间:2017-06-14 12:13:37

标签: java file-upload jersey multipartform-data security-context

在默认函数中,我可以使用ContainerRequestContext requestCtx从请求中获取securitycontext和username。

但由于某种原因,在使用MediaType.MULTIPART_FORM_DATA的函数中使用它时,我收到此错误:

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.

代码:

@POST
@Path("{albumcode}")
@RolesAllowed("user")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadPicture(@PathParam("code") String code,
FormDataMultiPart multipart, 
ContainerRequestContext requestCtx) {

如果没有ContainerRequestContext requestCtx,上面的代码就可以了。

从我的ContainerRequestContext获取数据并同时上传文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

通过随机帖子阅读时找到解决方案。我发现在@Context前面添加ContainerRequestContext requestCtx注释解决了这个问题。

我希望我可以帮助别人解决这个问题,但是找不到任何其他答案。

@POST
@Path("{albumcode}")
@RolesAllowed("user")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadPicture(@PathParam("code") String code,
FormDataMultiPart multipart, 
@Context ContainerRequestContext requestCtx) {