2013-01-07 49 views
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())}「/>

謝謝。

+1

看起來不錯。你有沒有看過日誌('vmc logs yourappname')你準確得到了什麼?你有404嗎?內容長度和mime類型是否已設置?另外,您是否可以嘗試使用隧道功能(http://docs.cloudfoundry.com/tools/vmc/caldecott.html)來確保圖像的字節實際上在數據庫中? – ebottard

+0

感謝@ebottard有關caldecott隧道的信息。我設法安裝並運行以下查詢以獲得顯示的結果:=>從圖片中選擇mime_type,length(圖片); mime_type |長度 ------------ + -------- image/jpeg | 41725 image/jpeg | 27280 image/jpeg | 68049 image/jpeg | 108037 (4 rows) – Trevor

+0

當我從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

回答

2

看起來您的查詢有問題。你爲什麼不把你的數據庫從postgreSql改成MySQL,看看問題是否仍然存在。我不相信這裏的問題是關於RDBMS服務的。

相關問題