3

RESTlet2.0を使用してJAVAでRESTAPIを作成しています。FacebookがGraphAPIで行っているのと同様の方法で、データベースから画像を返すAPI呼び出しを作成したいと思います。

基本的に、私は例にGETを行います

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

これにより、DBからblobデータが取得され、ユーザーが次のように表示できるように画像が返されます。

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

ヘッダーのcontent-typeを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-typeimage/png言及したとおりです。

于 2012-11-15T11:58:32.147 に答える