2015-10-09 11 views
6

Przechowuję obrazy jpg w bazie danych (jako tablicy bajtów). Chcę uniknąć upuszczania na system plików przed wyświetleniem na stronie internetowej.Pokazywanie obrazu Base64String za pomocą Thymeleaf

Testy jednostek pokazują, że przechowywanie i pobieranie bazy danych działa bezbłędnie. FIES można uzyskać z bazy danych i przekształcany z powrotem do jpg

obraz przekształcono tablicaBitowa i przechowywane w bazie danych z następującym kodu:

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; 

} 

mam klasy ViewWrapperMediaImage zawierający szereg bajtów pobranych z baza danych. Ta klasa ma również metodę, która konwertuje bytearray na 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; 
} 
} 

My Thymeleaf dachówka następnie wywołuje generateBase64Image metoda konwersji():

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

to nie działa.

Wytworzona źródło html jest następujący:

< IMG src = "danych: obrazu JPEG /; base64, _9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3 -....

Wszelkie wskazówki byłyby głęboko doceniane

Odpowiedz

6

OK, jak się okazuje jest to banalnie proste, ja rozwiązany w ciągu 2 minut z pytaniem na pytanie, ale założę się, inni mają to samo pytanie.

Odpowiedzią jest nie używać URLSafe

Współpracuje z encodeBase64String()

+0

rozwiązał problem, zasługujesz +1 Dzięki :) – James

Powiązane problemy