私は実際にGWTベースのWebサイトで作業しています。 今、私は自分のウェブサイト上のデータベースに保存されている画像をどのように表示するべきかについて悩んでいます。GWT - データベースからのイメージ
基本的に私のデータベースには、ハイバーネイトを使ってフェッチするbytearrayがあります。 は今、私はおそらく、そのデータの中から...タグを作成する必要がありますが、私はJavaでGWTを使用していますか
知っているとGWTでImage Widgetがあり
私は実際にGWTベースのWebサイトで作業しています。 今、私は自分のウェブサイト上のデータベースに保存されている画像をどのように表示するべきかについて悩んでいます。GWT - データベースからのイメージ
基本的に私のデータベースには、ハイバーネイトを使ってフェッチするbytearrayがあります。 は今、私はおそらく、そのデータの中から...タグを作成する必要がありますが、私はJavaでGWTを使用していますか
知っているとGWTでImage Widgetがあり
ここに解決策があります。まず、com.google.gwt.user.server.Base64Utils.toBase64(byte [])を使用してバイト配列をエンコードする必要があります。しかし、この方法はIE 7では機能しません。IE8には32 KBの制限があります。IE9にはこの制限がありません。ここ
はここ
public String getImageData(){
String base64 = Base64Utils.toBase64(imageByteArray);
base64 = "data:image/png;base64,"+base64;
return base64;
}
がクライアント方式でサーバー上のメソッドです。
@Override
public void onSuccess(String imageData) {
Image image = new Image(imageData);
RootPanel.get("image").add(image);
}
を休止していません。クライアント側ではできませんが、サーバと通信するにはRPCに電話することができます。それは簡単なCRUDアプリケーションです。サーバーでは休止状態でデータベースに接続し、クライアントへのイメージを返すか、それはURLだと、クライアント側でそのような何か:
@Override
public void onSuccess(String imageUrl) {
Image image = new Image(imageUrl);
RootPanel.get("image").add(image);
}
@Override
public void onFailure(Throwable caught) {
Window.alert(caught.getMessage());
}
すべてです。ハッピーコーディング
resourceStreamを返すサーブレット/コントローラをマップすることはできますが、GWTの仕組みはわかりません。たとえば あなたがサーブレットをマップする場合は、あなたがそれを返すことができるようにIMAGEIDのPARAMを取る「ImageViewerの」、画像への要求がなる
/imageViewer?imageId=1234
Hibernateのオブジェクトは、BLOBへの参照を持っているでしょう。 UI上の リファレンス
<img src="/imageViewer?imageId=1234"/>
更新次のようになります。あなたはそれが画像を返すことであるとしてモデルを使用することができないかもしれない、あなたは、ストリームデータを返す明示的なコントローラまたはサーブレットが必要になります。サーブレットで
あなたはGursel Kocaが示唆したように、私は同じアプローチを使用
// get reference to input stream
InputStream in = hibnerateObject.getImage();
// set MIME type etc
response.setContentType(mimeType);
OutputStream out = response.getOutputStream();
while ((len = in.read(buf)) >= 0)
out.write(buf, 0, len);
in.close();
out.close();
ような何かをするだろうが、それだけには(皮肉にも)GWTのBase64Utils
String base64 = Base64.encodeBase64String(array);
base64 = "data:image/"+type+";base64," + base64;
return base64;
のApacheのBase64ライブラリではなく、を使用して動作するように得ることができます
はまた、既存の画像やイメージプレースホルダーを更新する場合は、てsetURLメソッドは、あなたのスタイルシートを上書きするので、その最初をつかむようにしてくださいますのでご注意:
String styleName = profilePicture.getStyleName();
profilePicture.setUrl(base64String);
profilePicture.setStyleName(styleName);
+1 ..すべてのgwt開発者がこの問題に遭遇するためです。 –