2015-10-09 12 views
6

Ich speichere JPG-Bilder in einer Datenbank (als Byte-Array). Ich möchte vermeiden, auf das Dateisystem zu fallen, bevor es auf einer Webseite angezeigt wird.Base64String Bild mit Thymeleaf

Komponententests zeigen, dass Datenbankspeicherung und -abruf ohne Beschädigung funktionieren. Fies kann aus der Datenbank und konvertierte zurück zu jpg-Datei

wurde

Das Bild zu byteArray und mit dem folgenden Code in der Datenbank gespeichert umgewandelt extrahiert werden:

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; 

} 

Ich habe eine Klasse ViewWrapperMediaImage, die den Byte-Array enthält abgerufen aus die Datenbank. Diese Klasse verfügt auch über eine Methode, die das Bytearray in Base64 String konvertiert.

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; 
} 
} 

Meine Thymeleaf Kachel ruft dann die Konvertierungsmethode generateBase64Image():

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

Es funktioniert nicht.

Die erzeugte HTML-Quelle ist wie folgt:

< img src = "data: image/JPEG; Base64, _9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3 -....

Irgendwelche Hinweise tief geschätzt

Antwort

6

OK würde, es stellt sich heraus, das ist tot einfach, ich innerhalb von 2 Minuten zu fragen, die Frage zu lösen, aber ich wette, andere die gleiche Frage haben.

Die Antwort ist nicht verwenden URLSafe

Es arbeitet mit encodeBase64String()

+0

das Problem wurde gelöst, Sie verdienen +1 Thanks :) – James