2015-10-09 29 views
6

Jpg görüntülerini bir veritabanında (bayt dizisi olarak) saklıyorum. Bir web sayfasında göstermeden önce dosya sistemine düşmekten kaçınmak istiyorum.Thymeleaf ile Base64String Görüntüsünü Görüntüleme

Birim Testleri, veritabanı depolama ve alma işleminin bozulmadan çalıştığını gösterir. Fies veritabanından ekstre ve resim kodu aşağıdaki veritabanındaki ByteArray dönüştürülür depolanmıştır

JPEG formatında, geri dönüştürülebilir: i alınan bayt dizisi içeren bir sınıf ViewWrapperMediaImage sahip

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; 

} 

veritabanı. Bu sınıf ayrıca, bytearray'i base64 String'e dönüştüren bir yönteme de sahiptir. O çalışmıyor

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

:

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

Benim Thymeleaf kiremit ardından dönüştürme yöntemi generateBase64Image() çağırır.

< img src = "veri aşağıdaki gibidir:

oluşturulan html kaynağı görüntü/JPEG; base64, _9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3 -....

Herhangi ipuçları derinden soru sorma 2 dakika içinde çözüldü, bu kolay öldü çıkıyor,

cevap

6

Tamam mutluluk duyacağız ama başkalarına aynı soruyu sahip olacaktır eminim.

cevap :)

Bu sorunu çözüldü encodeBase64String()

+0

ile çalışır, +1 Teşekkür hak URLSafe kullanmayın edilir – James

İlgili konular