Spring,Hibernate与mysql图像无法正常显示

时间:2015-10-02 04:01:38

标签: java mysql spring hibernate spring-mvc

昨天我发布了这个问题..但没有得到任何答案。

在我的项目中,我将图像文件存储在mysql数据库中。 表就像:

+-----------+---------------------+------+-----+---------+----------------+
| Field     | Type                | Null | Key | Default | Extra          |
+-----------+---------------------+------+-----+---------+----------------+
| upload_id | int(11)             | NO   | PRI | NULL    | auto_increment |
| uId       | int(20) unsigned    | NO   | MUL | NULL    |                |
| file_name | varchar(128)        | YES  |     | NULL    |                |
| file_data | longblob            | YES  |     | NULL    |                |
+-----------+---------------------+------+-----+---------+----------------+

现在我正在提取图像数据我的dao类是: -

  public List<ImageClass> fetchallimage(int uId) {


            ImageClass imageClass= new ImageClass(uId);

            String hql = "FROM ImageClass WHERE  uId = :uId1 ";


            Query query =  (Query) sessionFactory.getCurrentSession().createQuery(hql).setParameter("uId1",  imageClass.getUserId());

            return query.list();


        }

我的ImageClass是: -

    @Table(name = "imageStore")
    public class ImageClass{ 
    private long id;
            private String fileName;
            private byte[] data;
    ---getters and settrs with @Column annotations----

}

我的控制器类是: -

   @RequestMapping(method = RequestMethod.GET)
        public String ImageFetch(Map<String, Object> map,HttpServletRequest request,
                HttpSession session,HttpServletResponse response) {


                int uid= (int) session.getAttribute("uId");

                List<ImageClass> imageClass;

                imageClass= PicService.fetchallimage(uid);


                map.put("image",imageClass);
                return "account";
            }   
        }

和jsp页面是: -

  <c:forEach items="${image}" var="info">
     <div style="width:380px;display:block;text-align:center;">
        <img src="${info.data}" 
        border="0" alt="Dating" style="margin:10px;padding:15px;border:10px solid #FEB4DE;background:#FECDE9;"></div>
      </c:forEach> 

但是图片正在显示,如下所示: -

enter image description here

页面图像如下所示: [B @ 1284b24

为什么?为了实现这个形象,我必须做些什么?请各位建议我。

我已编辑: -

for (ImageClass temp : imageClass) {

byte[] encodeBase64 = Base64.encode(temp.getData());
String base64Encoded = new String(encodeBase64, "UTF-8");
 map.put("image",base64Encoded); }

并在jsp中: - &lt; img src="data:image/jpeg;base64,${image}" />

仍未拍照。

记录器中的

我得到输出: -

1 个答案:

答案 0 :(得分:1)

您必须转换该imageTo String,然后您可以轻松地在JSP中显示。我假设它是一个字节[]。使用@Transient变量,它将有所帮助:

dataDirectory

在jsp中,使用img标签并将String变量放在那里。请享用。