将Byte数组转换为URL时出错

时间:2017-09-19 16:52:26

标签: java jsp

我为许多其他人开了一个讨论而道歉,但我在这个网站的讨论中搜索了很多,但我没有找到适合我的解决方案。 我需要做的很简单,但我无法摆脱它。 我有和jpg图像存储在我的数据库中,采用BLOB格式,我希望将其恢复并创建一个标签IMG来显示它。 通过查询获取blob后,我只需将其转换为byteArray。 这里出现了问题。 如果我在响应中写入并在其他jsp中访问它,我也可以看到图像..

<html>
<head>
    <title>View Image</title>
</head>

<body>

    <b>View | <a href="index.jsp">Upload</a></b><br/><br/>

    <%
    String id = request.getParameter("id");
    %>
    <img src="Message.jsp" width="400px"/>

</body>

但如果我尝试创建标签IMG并在同一页面中设置标签,则不会显示(如下面的JSP代码所示)。

 Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(connectionURL, user, pass);

PreparedStatement ps = con.prepareStatement("select * from contacts ");
ResultSet rs = ps.executeQuery();

if(rs.next()){
    Blob blob = rs.getBlob("photo");
    byte byteArray[] = blob.getBytes(1, (int)blob.length());


%>
<img src="data:image/jpg;base64,<%=byteArray %>" />
<%
  /*  response.setContentType("image/gif");
    OutputStream os = response.getOutputStream();
    os.write(byteArray);
    os.flush();
    os.close();*/
}

(这不显示任何img)

1 个答案:

答案 0 :(得分:0)

img标记将进行单独的服务器调用以检索图像数据。 src属性应指向servlet。 servlet应该检索图像数据并将其直接写入输出流。