Как сохранить изображение в виде BLOB, а затем отобразить на веб-сайте Play! - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь создать файл initial-data.yml для Play!Рамочное приложение.Часть веб-приложения включает в себя изображения (для изображения профиля и тому подобное), и я хочу сохранить их как BLOB в моей базе данных MySQL (я знаю, что это не лучшая практика, использование файловой системы появится позже).Мне интересно, как я могу поместить «тестовое» изображение в мой файл YML и как я могу получить к нему доступ в веб-приложении и отобразить его.Любая помощь будет оценена.Вот что я пробовал до сих пор:

Часть 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 в первой строке этого метода, потому что кажетсячто изображение / байт [] не сохраняется в базе данных.Любые идеи, как правильно сохранить это в базе данных, а затем отобразить на веб-странице?

1 Ответ

1 голос
/ 24 февраля 2012

Вы должны добавить все свои двоичные данные в форме в кодировке Base64 с добавлением !! binary

binaryData: !!binary VGhpcyBTdHJpbmcgaXMgc3RvcmVkIGluIHlhbWwgZmlsZSB1c2luZyBiYXNlNjQ=

Этот пример взят из примеров Play Framework

samples-and-tests/just-test-cases/test/yamlTestData.yml
...