簡體   English   中英

JAX-RS接受圖像作為輸入

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM