[英]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.