【问题标题】:Retrieving blob from database using hibernate and displaying on web page using jsp使用hibernate从数据库中检索blob并使用jsp显示在网页上
【发布时间】:2019-02-04 22:05:36
【问题描述】:

Answer mentioned here这对我不起作用 我已将字节数组发送到数据库,该数组作为 blob 存储在数据库中

File file = new File(filePath);
byte[] imageData = new byte[(int) file.length()];

当我尝试从这个字节数组中的数据库中检索 blob 对象时

我得到一个像“[B@526d24d9”这样的值。 我将此值发送到 jsp 页面。(我将 blob 列表发送到 jsp 页面,即字节数组列表) 现在我正在尝试使用 jsp 在网页上呈现此图像。但我无法找出最有效的方法 一种方法是检索 blob 列表,对其进行处理并将其存储在文件中,然后使用标记从 jsp 页面中的该文件路径中检索 但我正在寻找一种更有效的方法。 I am trying to something like this

jsp代码

<c:forEach items="${list}" var="list" varStatus="loop">
   <c:set var="l" value="${loop.index}" />

    <tr>
    <td><c:out value= "${l+1}" /></td>
      <td><c:out value="${list.name}" /></td>
      <td><c:out value="${list.size} MB" /></td>
      <td><c:out value="${list.preview}" /></td>
      <td><i class="material-icons">edit</i>
      <i class="material-icons" onclick="Remove()">delete</i></td>
    </tr>
  </c:forEach>

list.preview 包含字节数组“[B@526d24d9”

【问题讨论】:

  • 您能否分享一下您尝试在 jsp 上显示的代码?
  • @codeLover 我已经编辑了代码。请检查一次
  • 请看看这个解决方案stackoverflow.com/questions/10510416/…
  • @codeLover 它不适用于我的代码

标签: java arrays hibernate jsp blob


【解决方案1】:

在您的实体类中创建一个 String previewUrl 字段。 并在 getter 内部编写此代码。

public String getPreviewUrl() {
        String pu = Base64.encode(getPreview());
        setPreviewUrl(pu);
        return previewUrl;
    }

在你的jsp代码中,

<td><img class='imagem_artigo' src='data:image/png;base64,${list.previewUrl}' alt='IMG DESC' width="200" height='200'></td>

这会起作用

【讨论】:

  • 非常感谢@HeenaMittal。此代码有效,这也是一种更好的方法。
【解决方案2】:

请记住,来自数据库的数据是图像文件的实际字节。您需要在 JSP 中放置一个带有图片引用的 标记。此外,您需要一个控制器,它只输出纯图像作为响应 - 不嵌入在 HTML 中。

对于第 1 步,您的 JSP 应该类似于:

<tr>
  <td><c:out value= "${l+1}" /></td>
  <td><c:out value="${list.name}" /></td>
  <td><c:out value="${list.size} MB" /></td>
  <td><img src="<c:out value="${list.previewUrl}" />"></td>
  <td><i class="material-icons">edit</i>
  <i class="material-icons" onclick="Remove()">delete</i></td>
</tr>

(你需要定义 previewUrl 并让它指向一个可以写出图像数据的控制器)

在第二步中,您需要创建这样一个控制器,它将图像字节数组的内容输出到 HttpServletResponse 的输出流。

最后一点:我对第一个 sn-p 有点困惑 - 你是从文件还是从数据库中检索图像数据? (如果是后者,字节数组的大小可能计算错误)

【讨论】:

  • 我正在从文件中检索数据
  • 我应该在控制器类中添加什么代码?这个字段 previewurl 我应该在哪里定义这个?
猜你喜欢
  • 1970-01-01
  • 2015-11-22
  • 2013-12-11
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多