我用insert into table_name (id,bin_data) value (null,load_file('f:/1.jpg'));存储了一个图片,但是无法导出原图,只能输出16进制文件?如何做?

解决方案 »

  1.   

    这个你要另外写程序来对select bin_data from table_name的结果进行文件流处理了
      

  2.   

    程序怎么写?我想应该 有对应的sql语句吧!我用outfile输出得到的图片文件与原图比较,发现只是原图数据中空格和00字符被替换,其他点阵信息都一样!用MySQL的GUI工具可以直接得到longblob的文件,即直接另存图片,从数据库中。所以我想也许有对应的sql语句!
      

  3.   

    要把图片转换成流形势InputStream取取出来的话也是一样的我做过这个实现
      

  4.   

    首先要生成一个临时文件
    File uploadFile=new File(getRealPath);
    其中的getRealPath是文件的绝地地址。
    然后把该文件放到InputStream流里。
    InputStream is = new FileInputStream(uploadFile);
    最后放到javabean的属性里。
    imageInfo.setInsertImageData(is);数据库相应的用blob,sql其实就是最简单的sql了。取出来的话,我是用servlet来实现的。
    首先要设置servlet编码为response.setContentType("image/jpg");
    然后把取出来的数据放到byte[]数组里
    byte[] is = imageDao.getImageById(Imageid);
    再把byte转化成输出流OutpustSteam
    OutputStream os = response.getOutputStream();
    再输出来
    os.write(is);
    os.flush();
    os.close();再jsp页面上用
    <image source="servlet?imageid=****"/>给分!!!!
      

  5.   

    得到的文件怎么进行流处理?必须另写程序吗?楼上是jsp,可以用c写吗?我在网上看到都是C#或者Java对此的应用,并没看到其他。如果用C或C++怎么写,最好具体,不胜感激!