在线等!请问我怎么把从数据库中取出的图片文件显示在页面上? 数据库中存的是二进制的图片文件,我需要把它读出来,然后显示在freeer的页面上,请问我该怎么取,并怎么显示呀?网上搜了很多,但是不行!我用的是freeer+webwork+ibatis 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把图片以二进制形式放在数据库中,取出时要将这个图片生成文件保存到一个目录下,那么从这个目录中链接显示,不是直接从数据库取出就直接显示在页面上的,mstrBackName = result.getString("randomname");//后辍名mstrfileName = result.getString("name");//图片名pintid = result.getInt("id");InputStream inStream=result.getBinaryStream("MarkBody");//数据库中取出的二进制流String aa=getServletContext().getRealPath("/")+"upload/showFile/"; FileOutputStream fs=new FileOutputStream(aa+mstrBackName);//定义要操作的路径和图片名if(mstrBackName!=null&&mstrBackName!=""){ byte[] buffer =new byte[1444]; while ((byteread=inStream.read(buffer))!=-1) { bytesum += byteread; fs.write(buffer,0,byteread);//写图片文件 } String str; str = "<img src='showFile/"+mstrBackName+"'"; //显示出图片 str = str + "width=39 height=42 border=0>"; out.println(str); out.println(pintid);}%> 我想应该是先向浏览器输出网页的文本字节流,浏览器会分析网页文件,如果有图片的标签它会向服务器申请图片文件,你可以在服务器的web.xml配置对图片文件进行过滤,如果请求的是图片文件,就调用图片处理servlet,让这个servlet读取数据库中某个图片的数据库中的二进制字节流发回浏览器,注意要在发送前设置response的发送类型。文本的是text/html ,图片的好像是/jpg等 小菜的是正解,我也是这么做的http://community.csdn.net/Expert/topic/5251/5251650.xml?temp=.2915155 可以参考一下我的Bloghttp://www.blogcn.com/User4/jaqcy/blog/35874137.html 替你靠过来了从数据库取出图像数据并通过servlet发布为图片代码只能做为参考,最好不要用在实际,因为它严重违反了MVC模式。 servlet 以下内容为程序代码:/** * */package servlet;import java.io.*;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletConfig;import javax.servlet.ServletOutputStream;import javax.imageio.ImageIO;import java.sql.*;import java.awt.Image;import java.awt.image.BufferedImage;/** * @author jaqcy * */public class ImageServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{// TODO 自动生成方法存根resp.setContentType("image/png";BufferedImage image=null;try{Class.forName("com.mysql.jdbc.Driver";Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/sampledb","root","mysql";Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("select image from customers";if(rs.next()){Blob blob=rs.getBlob(1);InputStream is=blob.getBinaryStream();image=ImageIO.read(is);}rs.close();stmt.close();conn.close();ServletOutputStream sos=resp.getOutputStream();ImageIO.write(image,"PNG",sos);sos.close();} catch (Exception e){// TODO 自动生成 catch 块e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{// TODO 自动生成方法存根doGet(req, resp);}@Overridepublic void init(ServletConfig config) throws ServletException{// TODO 自动生成方法存根super.init(config);}} 以下内容为程序代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><servlet><servlet-name>image</servlet-name><servlet-class>servlet.ImageServlet</servlet-class></servlet><servlet-mapping><servlet-name>image</servlet-name><url-pattern>/image.png</url-pattern></servlet-mapping><welcome-file-list><welcome-file>image.png</welcome-file></welcome-file-list></web-app> 不是吧zwgaa照抄我的代码有35分,我自己只得10分.-_- 哈哈,谢谢楼上的blog,下回我有问题把分还给你 struts1中path问题(顶者有分) 很奇怪的数据库。。报错?? CSS固定单元格expression的问题 怎么把表里的数据导入Excle 求权限管理的数据库设计及java实现 java字符串截取的问题!! 求救 一个关于web.xml的错误!进来帮忙看看,UP有分 【JSP 超简单问题2】 请问JSP里怎样将文本文件读入到数据库中去? 有什么函数或者其他方法? 以后一定给? el的乱码问题 征一个开源的或者免费的在线客户系统.
mstrBackName = result.getString("randomname");//后辍名
mstrfileName = result.getString("name");//图片名
pintid = result.getInt("id");
InputStream inStream=result.getBinaryStream("MarkBody");//数据库中取出的二进制流
String aa=getServletContext().getRealPath("/")+"upload/showFile/";
FileOutputStream fs=new FileOutputStream(aa+mstrBackName);//定义要操作的路径和图片名
if(mstrBackName!=null&&mstrBackName!="")
{
byte[] buffer =new byte[1444];
while ((byteread=inStream.read(buffer))!=-1)
{
bytesum += byteread;
fs.write(buffer,0,byteread);//写图片文件
}
String str;
str = "<img src='showFile/"+mstrBackName+"'"; //显示出图片
str = str + "width=39 height=42 border=0>";
out.println(str);
out.println(pintid);
}
%>
http://community.csdn.net/Expert/topic/5251/5251650.xml?temp=.2915155
http://www.blogcn.com/User4/jaqcy/blog/35874137.html
替你靠过来了
从数据库取出图像数据并通过servlet发布为图片代码只能做为参考,最好不要用在实际,因为它严重违反了MVC模式。
servlet
以下内容为程序代码:
/** * */package servlet;import java.io.*;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletConfig;import javax.servlet.ServletOutputStream;import javax.imageio.ImageIO;import java.sql.*;import java.awt.Image;import java.awt.image.BufferedImage;/** * @author jaqcy * */public class ImageServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{// TODO 自动生成方法存根resp.setContentType("image/png";BufferedImage image=null;try{Class.forName("com.mysql.jdbc.Driver";Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/sampledb","root","mysql";Statement stmt=conn.createStatement();ResultSet rs=stmt.executeQuery("select image from customers";if(rs.next()){Blob blob=rs.getBlob(1);InputStream is=blob.getBinaryStream();image=ImageIO.read(is);}rs.close();stmt.close();conn.close();ServletOutputStream sos=resp.getOutputStream();ImageIO.write(image,"PNG",sos);sos.close();} catch (Exception e){// TODO 自动生成 catch 块e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{// TODO 自动生成方法存根doGet(req, resp);}@Overridepublic void init(ServletConfig config) throws ServletException{// TODO 自动生成方法存根super.init(config);}}
以下内容为程序代码:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><servlet><servlet-name>image</servlet-name><servlet-class>servlet.ImageServlet</servlet-class></servlet><servlet-mapping><servlet-name>image</servlet-name><url-pattern>/image.png</url-pattern></servlet-mapping><welcome-file-list><welcome-file>image.png</welcome-file></welcome-file-list></web-app>