2012-02-19 89 views
1

我正在嘗試爲Play創建一個initial-data.yml文件!框架應用。部分Web應用程序涉及圖像(用於個人資料圖片等),我想將它們作爲BLOB存儲在我的MySQL數據庫中(我知道這不是最佳實踐,稍後會使用文件系統)。我想知道如何將「測試」圖像放在我的YML文件中,以及如何在Web應用程序中訪問它並顯示它。任何幫助,將不勝感激。下面是我到目前爲止已經試過:如何將圖像存儲爲BLOB,然後在Play!-powered網站中顯示?

陽明的部分:

Picture(Picture1): 
    picture:  010001010100010101000101010001010100010101000101010001010100010101000101010001010100010101000101010001010100010101000101|image/png 

我們的休眠模式有一個圖片作爲byte[]

這裏是我正在試圖訪問HTML中的圖像:

#{if _post.picture} 
     <!-- display the picture --> 
     <p> Hey, a picture should go here.</p> 
     <img src="@{Application.showImage(_post.getPicture().getBinaryImage())}" alt="long islands for life"/> 
    #{/if} 

下面是getBinaryImage()

private ByteArrayInputStream getBinaryImage() { 
     try { 
      BufferedImage image = ImageIO.read(new ByteArrayInputStream(byteImage)); 
      ImageInputStream is = ImageIO.createImageInputStream(image); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      ImageIO.write(image, "png", baos); 
      ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 
      return bais; 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return null; 
    } 

現在我得到一個NullPointerException這種方法,因爲第一線看起來image/byte []沒有被存儲在數據庫中。任何想法如何獲得適當的存儲在數據庫中,然後顯示在網頁上?

回答

1

你應該通過!!二進制

binaryData: !!binary VGhpcyBTdHJpbmcgaXMgc3RvcmVkIGluIHlhbWwgZmlsZSB1c2luZyBiYXNlNjQ= 

這個例子前置Base64編碼格式增加你的整個二進制數據是從Google Play框架的樣品

samples-and-tests/just-test-cases/test/yamlTestData.yml 
相關問題