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"%>
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;
}
}
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.
0 comments:
Post a Comment