2015-10-09 24 views
6

Tôi đang lưu trữ hình ảnh jpg trong cơ sở dữ liệu (dưới dạng mảng byte). Tôi muốn tránh rơi vào hệ thống tập tin trước khi hiển thị trên một trang web.Hiển thị hình ảnh Base64String với Thymeleaf

Kiểm tra đơn vị cho thấy lưu trữ và truy xuất cơ sở dữ liệu đang hoạt động mà không bị hỏng. FIEs có thể được chiết xuất từ ​​cơ sở dữ liệu và chuyển đổi trở lại tập tin jpg

Hình ảnh đã được chuyển đổi sang ByteArray và lưu trữ trong cơ sở dữ liệu với đoạn mã sau:

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; 

} 

Tôi có một ViewWrapperMediaImage lớp có chứa các mảng byte lấy từ kho dữ liệu. Lớp này cũng có một phương thức để chuyển đổi chuỗi ký tự thành chuỗi base64.

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 gạch sau đó gọi generateBase64Image phương pháp chuyển đổi():

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

Nó không làm việc.

Nguồn html tạo ra như sau:

< img src = "data: image/jpeg; base64, _9j_4AAQSkZJRgABAgAAAQABAAD_2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL_2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL_wAARCADhASwDASIAAhEBAxEB_8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL_8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4-Tl5ufo6erx8vP09fb3 -....

Bất kỳ gợi ý sẽ được đánh giá sâu sắc

Trả lời

6

OK, nó quay ra đây là chết dễ dàng, tôi giải quyết trong vòng 2 phút của đặt ra câu hỏi, nhưng tôi đặt cược những người khác sẽ có cùng một câu hỏi.

Câu trả lời là không sử dụng URLSafe

Nó hoạt động với encodeBase64String()

+0

Giải Quyết vấn đề này, bạn xứng đáng 1 Cảm ơn :) – James

Các vấn đề liên quan