Here is the Way To Upload Image into Database .
In My Example i have
1.Jsp
2.Servlet
3.POJO class
4.DAO Class
5.web.xml
6.hibernate configuration file
and mysql database.
and i am using "commons file uploading library".For This we need 2 jar files
commons-fileupload-(version)[1.3.1].jar
commons-io-(version)[2.4].jar
ImageUpload.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Image Upload
pageEncoding="ISO-8859-1"%>
ImageUploadServlet.java
package p1;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class ImageUploadServlet extends HttpServlet {
private static final long serialVersionUID = -1623656324694499109L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try {
if (! ServletFileUpload.isMultipartContent(request)) {
System.out.println("sorry. No file uploaded");
return;
}
// Apache Commons-Fileupload library classes
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(factory);
// parse request
List items = sfu.parseRequest(request);
// get uploaded file
FileItem file = (FileItem) items.get(0);
System.out.println("file size: "+file.getSize());
new ImageUploadDAO().upload(file.getInputStream());
}catch(Exception e){
e.printStackTrace();
}
}
}
Image.java(POJO)
package p1;
import java.sql.Blob;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
@Table(name="image", catalog="TEST")
public class Image {
@Id
@GeneratedValue
@Column(name="id")
private int id;
@Column(name="image")
@Lob
private Blob image;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the image
*/
public Blob getImage() {
return image;
}
/**
* @param image the image to set
*/
public void setImage(Blob image) {
this.image = image;
}
}
import java.sql.Blob;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
@Entity
@Table(name="image", catalog="TEST")
public class Image {
@Id
@GeneratedValue
@Column(name="id")
private int id;
@Column(name="image")
@Lob
private Blob image;
/**
* @return the id
*/
public int getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
/**
* @return the image
*/
public Blob getImage() {
return image;
}
/**
* @param image the image to set
*/
public void setImage(Blob image) {
this.image = image;
}
}
ImageUploadDAO.java
package p1;
import java.io.InputStream;
import java.sql.Blob;
import org.apache.commons.io.IOUtils;
import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class ImageUploadDAO {
private SessionFactory sessionFactory=null;
public void upload(InputStream is){
try{
// Create the SessionFactory from hibernate.cfg.xml
sessionFactory=new AnnotationConfiguration().configure().buildSessionFactory();
Session session=sessionFactory.openSession();
Image image=new Image();
byte[] bytes = IOUtils.toByteArray(is);
Blob blob = Hibernate.createBlob(bytes, session);
image.setImage(blob);
session.save(image);
System.out.println("Image uploded successfully");
}catch(Exception e){
System.err.println("Exception in ImageUploadDAO");
e.printStackTrace();
}
}
}
web.xml
Hibernate configuration file
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
This is working example. Enjoy Coding..!!
*Note: if uploading image through Ajax request
add a field fileElementId:'brandimage(image field id in html)', send the remaining data in data:{...} field.
In servlet check the each 'FileItem ' object whether it 'isFormField()' or not,if yes that is the image ,take InputStream and forward to DAO.There create Blob object and insert into database.It requires ajaxfileupload.js Library along with the commons api in this application.
If You Got any problems please Feel Free To Make Comments...!!!
Happy coding.