ローカルの Tomcat サーバーにデプロイすると正常に動作する単純な Grails アプリケーションがあります。ただし、Cloudfoundry にデプロイすると、データベースに保存された画像が表示されません。解決策についてグーグルで調べたところ、Cloudfoundryではローカルファイルシステムを使用して画像ファイルを保存できない(または使用できない)ことが明らかになりましたが、データベースを使用してコントローラーのメインメモリ(出力ストリーム)に書き込んでいます。誰でも助けて。
コードの一部を次に示します。
// 画像ドメイン クラス
class Picture {
byte[] image
String mimeType
String name
static belongsTo = ...
static constraints = {
name(maxSize:20, )
image(maxSize:3145728)
....
}
String toString(){
...
}
}
//Picture controller
def image = {
def picture = Picture.get(params.id)
if(!picture || !picture.image){
...
}
else{
response.setContentType(picture.mimeType)
response.setContentLength(picture.image.size())
OutputStream out = response.getOutputStream();
out.write(picture.image);
out.flush();
out.close();
}
}
//私の gsp < img width="128" height="96" class="image" src="${createLink(controller:'picture', action:'image', id:pictureInstance.ident())} " />
ありがとうございました。