如题!当然了这种方法在实际开发当中是一般不用的,因为将图片存到数据库的读取效率会很低,这里只是
分享一下这种方法:
以二进制的形式将图片写入数据库
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(); } %> |