我在数据库中存的图片类型是image ,在jsp中,提取显示的时候,怎样转换成string类型呀?

解决方案 »

  1.   

    既然是二进制文件有如何能转化成String?
    一定要在数据库存放图片吗,能不能把它存放在服务器某个目录下,然后在数据库只存放图片路径就可以了呀!
    除非有特殊需求,要不然一般都只存放路径。
      

  2.   

    为嘛要换成String型?你存在数据库里面都是Image型的了?难道你要显示它的名字?
      

  3.   

    那我在jsp中读取image的时候,应该初始为string类型还是什么类型啊》/?java中没有image类型啊……那我的getter   setter怎末办啊?我在界面读取的时候怎末办呀?
      

  4.   

    为什么要把图片本身存到数据库里面去呢?莫非嫌数据库空间太大了不成。可以把图片直接放服务器某个目录下,比如/home/pic/a.jpg,数据库存这个路径,下次要用就直接读路径ok了。
      

  5.   

    jsp中的bean属性不支持byte类型,只支持string float int date,你若想把图片直接显示在页面,单纯的把byte类型转换成string是没有用的,
    技术拓展:只有在http协议传输的时候我们才会用到讲byte类型通过base64编码转换成string类型定义在xml文件中传输到远程再base64反解析成byte
    <image src中传的必须是物理图片的绝对路径,才可以显示预览图片,我知道你想让你的byte图片直接在jsp中预览出来,代码示例如下:public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      response.setContentType("image/jpeg");
      
      String id = request.getParameter("imgId");
      if(id == null) {
       return;
      }
      
      int productId = Integer.parseInt(id);
    /*********通过ID可以从数据库里面找到该值,这里代码略***********/
      PrintWriter out = response.getWriter();
      byte[] buffer = pib.getProductImage();// 这里的pib是一个JavaBean的实例,方法返回的是一个byte数组,我用了Hibernate框架,所以在Oracle数据库中的CLOB对应的属性类型是byte[]
      InputStream is = new ByteArrayInputStream(buffer);
      int a = is.read();
      while(a != -1) {
       out.print((char)a);
       a = is.read();
      }
      out.flush();
      out.close();
      
     }
    <img src="/productImg?imgId=<jsp:getProperty property="productId" name="product"/>"><%--productId是javaBean中的属性对应数据库里面的id字段,也就是上面所说的ID,product是javaBean的实例,与上面pib属同一个类型--%>
      

  6.   

    如果你对为什么这样做很好奇,就研究下  PrintWriter out = response.getWriter(),这都是javaee的基础只是,
    PrintWriter 对象和jsp中的out内置对象不是一个东西,读代码要求甚解,以后很多问题就可以自主解决了
      

  7.   

    LZ是想用JSP显示数据库中的图片吗?
    <%@ page contentType="image/jpeg" %>  //声明此页面用于显示图片InputStream         is = resultSet.getBinaryStream("pictrue"); //数据库读取图片ServletOutputStream os = response.getOutputStream();         //数据显示在页面上
    int  readlen   = -1;
    byte readbuf[] = new byte[5120];
    while( (readlen = is.read(readbuf,0,5120)) != -1 ){
        os.write(readbuf, 0, readlen);
    }
    is.close();
    os.close();
      

  8.   

    一般存文件路径,页面用src引用,要是存数据库的话用blob,页面显示用二进制流