Archive for JSP

Java – Insert Image in Database

Monday, February 23rd, 2009

Upload image into database in java.

Database table picture

CREATE TABLE `picture` (
`id` int(10) NOT NULL auto_increment,
`image` blob,
PRIMARY KEY (`id`)
)

InsertImage.java

import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class InsertImage extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException{

        PrintWriter pw = response.getWriter();
        /* 
        Database connection, database name is test
        */
        String connectionURL = "jdbc:mysql://localhost:3306/test";
        Connection con=null;
        try{
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            /* 
            Database connection, database id is root and password is blank
            */
            con = DriverManager.getConnection(connectionURL, "root", "");
            PreparedStatement ps = con.prepareStatement("INSERT INTO picture(image) VALUES(?)");
            /* 
            inserting image in  pictures table*/
            File file = new File("C:\\tomcat\\webapps\\upload\\images\\pic.jpg");

            FileInputStream fs = new FileInputStream(file);
            
            ps.setBinaryStream(1,fs,fs.available());
            int i = ps.executeUpdate();

            if(i!=0){
              pw.println("image inserted successfully");
            }
            else{
              pw.println("problem in image insertion");
            }
        }
        catch (Exception e){
        System.out.println(e);
        }
  }
}

RetreiveImage.java

import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RetreiveImage extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException{
    /* 
    Database connection, database name is test
    */
    String connectionURL = "jdbc:mysql://localhost:3306/test";
    Connection con=null;
    try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        /* 
        Database connection, database id is root and password is blank
        */
        con=DriverManager.getConnection(connectionURL,"root","");
        Statement st1=con.createStatement();
        /* 
        select the image from the picture table    .
        */
        ResultSet rs1 = st1.executeQuery("select image from picture where id=1");
        String imgLen="";
        if(rs1.next()){
            imgLen = rs1.getString(1);
        }
        rs1 = st1.executeQuery("select image from picture where id=1");

        if(rs1.next()){
            int len = imgLen.length();
            byte [] rb = new byte[len];

            /* retrieving image in binery format*/

            InputStream readImg = rs1.getBinaryStream(1);
            int index=readImg.read(rb, 0, len); 

            System.out.println("index"+index);
            st1.close();

            response.reset();
            response.setContentType("image/jpg");
            response.getOutputStream().write(rb,0,len);
            response.getOutputStream().flush();
        }
    }
    catch (Exception e){
      e.printStackTrace();
    }
  }
}

web.xml

<servlet>
<servlet-name>InsertImage</servlet-name>
<servlet-class>InsertImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>InsertImage</servlet-name>
<url-pattern>/InsertImage</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>RetreiveImage</servlet-name>
<servlet-class>RetreiveImage</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RetreiveImage</servlet-name>
<url-pattern>/RetreiveImage</url-pattern>
</servlet-mapping>