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
Giải Quyết vấn đề này, bạn xứng đáng 1 Cảm ơn :) – James