2015-10-09 11 views
6

Я храню jpg-изображения в базе данных (в виде массива байтов). Я хочу не бросать на файловую систему перед показом на веб-странице.Отображение Base64String Изображение с Thymeleaf

Тесты на устройства показывают, что хранение и извлечение базы данных работают без коррупции. Fies может быть извлечен из базы данных и преобразовать обратно в JPG файл

Изображение превращалось в ByteArray, и хранится в базе данных с помощью следующего кода:

public static byte[] getImageAsBytes(BufferedImage buffer) throws IOException 
{ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    ImageIO.write(buffer, "jpg", baos); 
    baos.flush(); 
    byte[] imageInByte = baos.toByteArray(); 
    baos.close(); 
    return imageInByte; 

} 

У меня есть класс ViewWrapperMediaImage, который содержит массив байт, извлеченный из базы данных. Этот класс также имеет метод, который преобразует bytearray в base64 String.

package jake.prototype2.controller.viewwrapper; 

import org.apache.commons.codec.binary.Base64; 

import jake.prototype2.model.assessment.MediaImage; 
import jake.prototype2.model.assessment.TestStructureException; 
import jake.prototype2.model.structure.InterfacePersistenceBean; 

public class ViewWrapperMediaImageCreate extends ViewWrapperTestContentElementCreate 
{ 

private byte[] image; 

protected String mediaFileName; 

private static final long serialVersionUID = 4181515305837289526L; 

public ViewWrapperMediaImageCreate(InterfacePersistenceBean persistenceBean) throws TestStructureException 
{ 
    .... 
    } 
} 

public byte[] getImage() 
{ 
    return image; 
} 

public String generateBase64Image() 
{ 
    return Base64.encodeBase64URLSafeString(this.getImage()); 
} 

public void setImage(byte[] image) 
{ 
    this.image = image; 
} 

public String getMediaFileName() 
{ 
    return mediaFileName; 
} 

public void setMediaFileName(String mediaFileName) 
{ 
    this.mediaFileName = mediaFileName; 
} 
} 

Мои Thymeleaf плитка затем вызывает метод преобразования generateBase64Image():

<img th:src="@{'data:image/jpeg;base64,'+${vwNewTestContentElement.generateBase64Image()}}" />

Это не работает.

Сгенерированный исходный HTML выглядит следующим образом:

< IMG SRC = "Данные: изображение/JPEG; base64, _9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3 -....

Любые намеки будут оценены глубоко

ответ

6

ОК, то оказывается, что это мертвый легко, я решил в течение 2 минут с задавая вопрос, но я уверен, другие будут иметь один и тот же вопрос.

Ответ не использовать URLSafe

Он работает с encodeBase64String()

+0

решенный вопрос, вы заслуживаете +1 Спасибо :) – James

Смежные вопросы