我正在尝试为Play创建一个initial-data.yml
文件!框架应用。 Web应用程序的一部分涉及图像(用于配置文件图片等),我想将它们作为BLOB存储在我的MySQL数据库中(我知道这不是最佳实践,稍后将使用文件系统)。我想知道如何在我的YML文件中放置一个“测试”图像,以及如何在Web应用程序中访问它并显示它。任何帮助,将不胜感激。以下是我到目前为止所尝试的内容:
YML的一部分:
Picture(Picture1):
picture: 010001010100010101000101010001010100010101000101010001010100010101000101010001010100010101000101010001010100010101000101|image/png
我们的Hibernate模型的图片为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,因为它似乎没有将图像/ byte []存储在数据库中。有任何想法如何将其妥善存储在数据库中,然后在网页上显示?
答案 0 :(得分:1)
您应该以!二进制
前面的Base64编码形式添加整个二进制数据binaryData: !!binary VGhpcyBTdHJpbmcgaXMgc3RvcmVkIGluIHlhbWwgZmlsZSB1c2luZyBiYXNlNjQ=
此示例来自Play Framework示例
samples-and-tests/just-test-cases/test/yamlTestData.yml