0
我有一個簡單的Grails應用程序,可以在部署到本地Tomcat服務器時正常工作。但是,當我部署到Cloudfoundry時,不會顯示保存到數據庫的圖像。谷歌搜索的解決方案只是透露,在Cloudfoundry你不能(或不應該)使用本地文件系統來存儲圖像文件,但我正在使用數據庫並寫入我的控制器的主內存(輸出流)。任何人幫助。Cloudfoundry:存儲在數據庫中的圖片在應用程序在cloudfoundy上運行時不顯示
下面是代碼的一部分:
//圖片域類
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」 類=「圖像「src =」$ {createLink(controller:'picture',action:'image',id:pictureInstance.ident())}「/>
謝謝。
看起來不錯。你有沒有看過日誌('vmc logs yourappname')你準確得到了什麼?你有404嗎?內容長度和mime類型是否已設置?另外,您是否可以嘗試使用隧道功能(http://docs.cloudfoundry.com/tools/vmc/caldecott.html)來確保圖像的字節實際上在數據庫中? – ebottard
感謝@ebottard有關caldecott隧道的信息。我設法安裝並運行以下查詢以獲得顯示的結果:=>從圖片中選擇mime_type,length(圖片); mime_type |長度 ------------ + -------- image/jpeg | 41725 image/jpeg | 27280 image/jpeg | 68049 image/jpeg | 108037 (4 rows) – Trevor
當我從grails cloudfoundry插件運行cf-logs時,日誌中沒有錯誤。目前爲止唯一的日誌來自KickstartFilters.groovy:picture.list:[action:list,controller:picture] picture.image:[id:9074,action:image,controller:picture] picture.image:[id: 9075,action:image,controller:picture] picture.image:[id:9073,action:image,controller:picture] picture.image:[id:9081,action:image,controller:picture] – Trevor