从数据查出image类型并在jsp页面显示

本文介绍了两种方法将数据库中以Base64字符串存储的图片展示在JavaWeb页面上:1) 使用Data URI scheme直接在HTML img标签中设置;2) 后台解码Base64字符串,以流形式返回给页面。第一种方法在IE8及以下版本浏览器中可能存在兼容性问题,第二种方法更注重浏览器兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

很多javaweb开发人员可能都会遇到当图片以Base64的字符串存在数据库中,怎么展示到页面上呢?我所熟知的有两种方法:

1.直接使用Data URI scheme,即将后台存的base64字符串直接传到页面,页面的img等使用时指定src='https://img-blog.csdnimg.cn/2022010710013359713.png',如<img src=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D”/>;

 

import org.apache.commons.codec.binary.Base64;
从数据库查出来

List list = q.list();
            if(!list.isEmpty()){
                for (Object object : list) {

                    if(null!=object){                        
                        lo.add(Base64.encodeBase64String(decoder.decodeBuffer(new String((byte[]) object))));
                    }
                }        
            }
            result.put("img", lo);

 

<img src="https://img-blog.csdnimg.cn/2022010710013388148.jpg' +img' + ' "/>

 


2.后解码,将base64字符串解码成二进制的图片直接以流的方式返回给页面。如:BASE64Decoder decoder = new BASE64Decoder();

HttpServletResponse response = ServletActionContext.getResponse();
        try {            
             String imgStr = base64Str;
           byte[] b = decoder.decodeBuffer(imgStr);
            response.setContentType("image/jpg"); // 设置返回的文件类型
            OutputStream os = response.getOutputStream();
            os.write( b);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }    


 
也面需要使用图片的指定src为后台接受请求的接口地址,如:

var url = "<%=request.getContextPath()%>/app/attachments.do?id="+id;    

<img src="' + url + '" />
其中,第一种方式在IE8及以下版本的浏览器中支持存在着问题。如果考虑方便而且不用考虑浏览器兼容问题的话,建议使用第一种。如果考虑到多浏览器兼容性问题,建议使用第二种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值