hanzou

 

java 向mysql插入blob的图片以及从mysql读取图片并用jsp显示

插入图片:
注意如果mysql是gbk编码的要先把mysql的字符集设置Latin1,输入完图片后再设回来
import java.sql.*;
import java.io.*;
class InsertPhoto{
 public static void main(String[] args) throws Exception{
  Class.forName("com.mysql.jdbc.Driver");
  Connection con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/tjphotodb?user=root&password=root");
  File f = new File("c:/test.jpg");
  FileInputStream fis = new FileInputStream(f);
  String sql = "insert into tjphotodb.t_photo(alarmid,photoblob) values(0,?)";
  PreparedStatement pstmt = con.prepareStatement(sql);
  pstmt.setBinaryStream(1,fis,(int)f.length());
  pstmt.executeUpdate();
  fis.close();
  pstmt.close();
  con.close();
 }
}
读取并显示图片:
后台用一个servlet来读取,然后让前台的jsp显示
后台servlet:
public static InputStream query_getPhotoImageBlob(int id){
  String sql = "select photoblob from "+DB_TABLE_PHOTO+" where id="+id;
  Connection con = null;
  Statement stmt = null;
  ResultSet rs = null;
  InputStream result = null;
  try {
   con = getConnection();
   stmt = con.createStatement();
   rs = stmt.executeQuery(sql);
   if (rs.next())
    result = rs.getBlob("photoblob").getBinaryStream();
  } catch (SQLException e) {
   // TODO: handle exception
   System.err.println(e.getMessage());
  }finally{
   closeConnection(rs,stmt,con);
  }
  return result;
 }

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  if (request.getParameter("id") != null){
   response.setContentType("image/jpeg");
   InputStream is = DBUtil.query_getPhotoImageBlob(Integer.valueOf(request.getParameter("id")).intValue());
   if (is != null){
    try {
     is = new BufferedInputStream(is);
     BufferedImage bi = ImageIO.read(is);
     OutputStream os = response.getOutputStream();
     JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
     encoder.encode(bi);
     os.close();
     is.close();
    } catch (IOException e) {
     // TODO: handle exception
     System.err.println(e.getMessage());
    }
   }
  }
 }
前台jsp:
<img style="width:320px;height:240px" src="<%=helper.HTMLHelper.getProjectPath(request) %>/servlet/genImage?id=<%=request.getParameter("id")%>"/>

posted on 2009-06-02 11:01 hanzou 阅读(1524) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿

随笔档案(13)

搜索

最新评论

阅读排行榜

评论排行榜