[英]JAX-RS Accept Images as input
很长一段时间以来,我一直在为我的开发需求开发JAX-RS Web服务。 到目前为止我写的所有方法都接受java字符串或原始类型作为输入。
这种方法的一个例子:
@POST
@Path("MyMethod")
@Produces(MediaType.APPLICATION_JSON)
public String MyMethod(@FormParam("username")String username, @FormParam("password")String passowrd)
我现在要做的是接受图像作为输入。 我读了很多关于此的文章。 有人建议接受base64编码作为输入,其他建议接受实际的InputSteam。
但是,我还没有看到关于如何接受InputStream的完整示例。 我读到了@consumer注释和@Provider,但我还是无法绕过它。 是否有文章,文档或示例以某种方式引导我走向这个? 即关于如何实施而不是显示理论的一步一步的过程。
我知道base64编码有效,但出于好奇,我想知道其他方法是如何工作的......提前谢谢。
这应该工作:
import org.apache.commons.io.IOUtils;
@POST
@Path("MyMethod")
@Consumes("*/*") // to accept all input types
public String MyMethod(InputStream stream) {
byte[] image = IOUtils.toByteArray(stream);
return "done";
}
可能不是首选但是将InputStream
与一个或多个路径参数组合的简单方法:
@POST
@Path("page/{page}")
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces("image/jpeg")
public StreamingOutput generatePage(final InputStream inputStream, @Context UriInfo uriInfo) {
final int page = Integer.parseInt(uriInfo.getPathParameters().getFirst("page"));
return (outputStream) -> {
service.generatePage(page, inputStream, outputStream);
};
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.