Java – Insert Image in Database

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>
Bookmark  

 

4 Responses to “Java – Insert Image in Database”

  1. Vinayak says:

    Hi ,
    Nice article,
    that helped me..
    ~Vinayak

  2. satish says:

    it’s help me lot………………….thanx

  3. satish says:

    if i want to create folder at server end at run time …………
    how it possible……pls reply soon

  4. Arjun says:

    Hi Thanks a lot… i am creating to insert a image from the jsp(Not using input type as File just a text box and not using FormFile also).. My problem is i am able to insert image from my local but if the some one connected to my local i am getting the file not found exception.. that is bcos my action class is residing in the server the file path given in text box searches that file in server location which is not present so failing to insert the blob..So please let me know how can set the server object of image data in the js or in jsp… Thanks in advance

Leave a Reply

Security Code:

 

  Random Post