2012-02-19 56 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 
相关问题