您的位置:首页 > 数据库

以二进制的形式从数据库中存取图片

2009-06-25 08:45 429 查看
 如题!当然了这种方法在实际开发当中是一般不用的,因为将图片存到数据库的读取效率会很低,这里只是

分享一下这种方法:

以二进制的形式将图片写入数据库

package Servlet;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.PreparedStatement;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import Qng.DataBaseConnection;
 
public class InsertPic extends HttpServlet {
    private static final long serialVersionUID = -4220703706022012000L;
 
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
        request.setCharacterEncoding("GB2312");
        String path = "index.jsp";
        String name = request.getParameter("name").replace('//', '/');
 
        PreparedStatement pstmt = null;
        DataBaseConnection dbc = null;
        dbc = new DataBaseConnection();
        FileInputStream fis;
        File file;
 
        try {
            file = new File(name);
            fis = new FileInputStream(file);
 
            pstmt = dbc.getConnection().prepareStatement(
                    "insert into pic(image,title) values(?,?)");
            pstmt.setBinaryStream(1, fis, (int) file.length());
            pstmt.setString(2,request.getParameter("title"));
            System.out.println("success inserted image into database");
            pstmt.execute();
            pstmt.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        path = "ss.jsp";
        request.getRequestDispatcher(path).forward(request, response);
    }
 
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        this.doPost(request, response);
    }
}
以二进制的形式将图片从入数据库中读取出来
 
<%@ page contentType="text/html; charset=gb2312"%>
<%@ page import="java.io.*,java.sql.*,Qng.*"%>
<%
    int id=Integer.parseInt(request.getParameter("id"));
    String sql = " SELECT image FROM pic WHERE id="+id;
    PreparedStatement pstmt = null;
    DataBaseConnection dbc = null;
    dbc = new DataBaseConnection();
   
    try {
    pstmt = dbc.getConnection().prepareStatement(sql);
    ResultSet rs = pstmt.executeQuery();
        if (rs.next()) {
    Blob b = rs.getBlob("image");
    long size = b.length();
    byte[] bs = b.getBytes(1, (int) size);
    response.setContentType("image/jpeg");
    OutputStream outs = response.getOutputStream();
    outs.write(bs);
    outs.flush();
    rs.close();
        } else {
    rs.close();
    response.sendRedirect("index.jsp");
        }
    } finally {
        pstmt.close();
        dbc.close();
    }
%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息