3

我正在使用 RESTlet 2.0 在 JAVA 中创建一个 REST API。我想创建一个 API 调用,它将以类似于 Facebook 在其 Graph API 中所做的方式从数据库中返回图像。

基本上,我会做一个GET到例如

    http://localhost:8080/myAPI/{session_id}/img/p?id=1

然后,这将从数据库中检索 blob 数据,然后以用户可以这样显示的方式返回图像:

    <img src="http://localhost:8080/myAPI/{session_id}/img/p?id=1">

我知道我可能需要将标头中的内容类型设置为 Image/PNG(当然假设图像是 PNG),但我正在努力正确返回数据以使其正常工作。

有什么建议么?

谢谢!

4

3 回答 3

8

不确定 2.0,但是在 2.2 中你可以使用这样的东西:

@Get
public Representation getImage() {

    ...
    byte[] data = ...

    ObjectRepresentation<byte[]> or=new ObjectRepresentation<byte[]>(data, MediaType.IMAGE_PNG) {
        @Override
        public void write(OutputStream os) throws IOException {
            super.write(os);
            os.write(this.getObject());
        }
    };

    return or; 
}
于 2013-01-25T10:56:53.477 回答
2

使用 2.2 有一个 ByteArrayRepresentation 类型。

@Get("image/jpeg")
public void getIcon() {
    byte[ ] your_images_bytes = ...
    ByteArrayRepresentation bar 
        = new ByteArrayRepresentation(your_images_bytes, MediaType.IMAGE_JPEG) ;
    getResponse().setEntity(bar);
}
于 2014-12-17T19:43:16.897 回答
0

在我的应用程序中,我byte array从我的 REST 方法返回一个。content-type正如image/png你所提到的。

于 2012-11-15T11:58:32.147 回答