当前位置: 代码迷 >> Java Web开发 >> !请教小弟我如何把从数据库中取出的图片文件显示在页面上
  详细解决方案

!请教小弟我如何把从数据库中取出的图片文件显示在页面上

热度:115   发布时间:2016-04-17 17:12:45.0
在线等!请问我怎么把从数据库中取出的图片文件显示在页面上?
数据库中存的是二进制的图片文件,我需要把它读出来,然后显示在freemarker的页面上,请问我该怎么取,并怎么显示呀?

网上搜了很多,但是不行!

我用的是freemarker+webwork+ibatis

------解决方案--------------------
把图片以二进制形式放在数据库中,取出时要将这个图片生成文件保存到一个目录下,那么从这个目录中链接显示,不是直接从数据库取出就直接显示在页面上的,
mstrBackName = result.getString( "randomname ");//后辍名
mstrfileName = result.getString( "markname ");//图片名
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

------解决方案--------------------
可以参考一下我的Blog
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

{


@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException

{

// TODO 自动生成方法存根

resp.setContentType( "image/png "[img]/images/wink.gif[/img];

BufferedImage image=null;

try

{

Class.forName( "com.mysql.jdbc.Driver "[img]/images/wink.gif[/img];

Connection conn=DriverManager.getConnection( "jdbc:mysql://localhost/sampledb ", "root ", "mysql "[img]/images/wink.gif[/img];

Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery( "select image from customers "[img]/images/wink.gif[/img];

if(rs.next())

{

Blob blob=rs.getBlob(1);

InputStream is=blob.getBinaryStream();

image=ImageIO.read(is);
  相关解决方案