File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes JSF and the fly likes File Download/Upload Using JSF+Richfaces+Spring+Hibenrate+MYSQL (Blob)    Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » JSF
Bookmark "File Download/Upload Using JSF+Richfaces+Spring+Hibenrate+MYSQL (Blob)    " Watch "File Download/Upload Using JSF+Richfaces+Spring+Hibenrate+MYSQL (Blob)    " New topic
Author

File Download/Upload Using JSF+Richfaces+Spring+Hibenrate+MYSQL (Blob)

Micky Kr
Greenhorn

Joined: Apr 28, 2010
Posts: 11
I Have to Implement file Upload and Download functionality in my current application Technology I am using is JSF+Richfaces+Spring+Hibenrate+MYSQL

Till Now i am able to implement file upload functionality successfully and facing problem in Downloading the file below is my Code ;


---------------------------------------JSP File Upload-------------------------------------------
<rich:fileUpload id="upload" fileUploadListener="#{projectDetailManageBean.fileUploadListener}" maxFilesQuantity="5" listHeight="180" listWidth="420"/>


---------------------------------------fileUploadListener-------------------------------------------

public void fileUploadListener(UploadEvent event) throws Exception{
UploadItem item = event.getUploadItem();
String FullfileName = item.getFileName();
String fileName=FullfileName.substring(FullfileName.lastIndexOf("\\")1);
System.out.println("File Name :" fileName);
ExternalContext con = FacesContext.getCurrentInstance().getExternalContext();
ServletContext sCon = (ServletContext) con.getContext();
String filepath = sCon.getRealPath("/");
try{
java.io.File uploadFile = new java.io.File(filepath, fileName);
FileInputStream fis = new FileInputStream(item.getFile());
FileOutputStream out = new FileOutputStream(filepath+fileName);
int bytes = 0;
byte[] bteFile = new byte[(int)event.getUploadItem().getFile().length()];
UploadFileDetail uploadFileDetail = new UploadFileDetail();
uploadFileDetail.setDistroContent( fis );
uploadFileDetail.setUploadFileName(item.getFileName());
uploadFileDetail.setFileSize(event.getUploadItem().getFile().length());
uploadFileDetailList.add(uploadFileDetail);

}
uploadsAvailable--;

} catch(Exception ex){

ex.printStackTrace();

}finally{
//ps.close();
//fis.close();

}
}


===============================Java ============================================


for(Iterator<UploadFileDetail> it =uploadFileDetailList.iterator();it.hasNext();){
UploadFileDetail uploadFileDetail=it.next();

uploadFileDetail.setProject(proForPD);
uploadFileDetail.setReferenceId(revisionNo);
uploadFileDetail.setReferenceName("Add Revision");
uploadFileDetail.setEneteredBy(getSessionUser());
uploadFileDetail.setEneteredOn(FacesUtil.time());
fileUploadDao.saveUploadedFiles(uploadFileDetail);


uploadFileDetailList=new ArrayList<UploadFileDetail>();
}

===============================Dao Implementaion============================================
public class FileUploadDaoImpl extends HibernateDaoSupport implements FileUploadDao {

public void saveUploadedFiles(UploadFileDetail uploadFileDetail) {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
transaction.begin();
session.save(uploadFileDetail);
session.flush();
session.refresh(uploadFileDetail);
transaction.commit();
}

public List<UploadFileDetail> getFilesDetailList(int projectId, int pdNumber) {
Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
Transaction transaction = session.getTransaction();
transaction.begin();
List<UploadFileDetail> downloadFileList = session.createQuery("from UploadFileDetail order by eneteredOn desc").list();
transaction.commit();
return downloadFileList;
}

}




============================================================================================================================================
===============================FileUploadDetail Bean============================================

package pil.pdm.model.businessobject.project;

import java.sql.Timestamp;
import pil.pdm.view.util.;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.sql.Blob;
import java.sql.SQLException;
import org.hibernate.Hibernate;
import pil.pdm.model.businessobject.user.User;



/*

@author Ajay
*/
public class UploadFileDetail implements Serializable {

private long id;
private String uploadFileName;
private Blob distro = null;
private long fileSize;
private Blob fileUploded;

private int referenceId;
private String referenceName;

private Project project;

private User eneteredBy;
private User updatedBy;

private java.sql.Timestamp eneteredOn;
private java.sql.Timestamp updatedOn;


public long getFileSize() {
return fileSize;
}

public void setFileSize(long fileSize) {
this.fileSize = fileSize;
}

public Blob getFileUploded() {
return fileUploded;
}

public void setFileUploded(Blob fileUploded) {
this.fileUploded = fileUploded;
}

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getUploadFileName() {
return uploadFileName;
}

public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}



public Blob getDistro() {
return distro;
}

public void setDistro(Blob distro) {
this.distro = distro;
}


public InputStream getDistroStream()
throws SQLException
{
if (getDistro() == null)
return null;

return getDistro().getBinaryStream();
}


public void setDistroContent( InputStream sourceStream )
throws IOException
{
setDistro( Hibernate.createBlob( sourceStream ) );
}

public User getEneteredBy() {
return eneteredBy;
}

public void setEneteredBy(User eneteredBy) {
this.eneteredBy = eneteredBy;
}

public Timestamp getEneteredOn() {
return eneteredOn;
}

public void setEneteredOn(Timestamp eneteredOn) {
this.eneteredOn = eneteredOn;
}

public int getReferenceId() {
return referenceId;
}

public void setReferenceId(int referenceId) {
this.referenceId = referenceId;
}

public String getReferenceName() {
return referenceName;
}

public void setReferenceName(String referenceName) {
this.referenceName = referenceName;
}

public User getUpdatedBy() {
return updatedBy;
}

public void setUpdatedBy(User updatedBy) {
this.updatedBy = updatedBy;
}

public Timestamp getUpdatedOn() {
return updatedOn;
}

public void setUpdatedOn(Timestamp updatedOn) {
this.updatedOn = updatedOn;
}

public Project getProject() {
return project;
}

public void setProject(Project project) {
this.project = project;
}




}

===============================hbm File============================================
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="pil.pdm.model.businessobject.project.UploadFileDetail" table="pdmfiles">
<id name="id">
<generator class="increment"/>
</id>
<property column="reference_id" name="referenceId"/>
<property column="reference_name" name="referenceName"/>
<property column="file_name" name="uploadFileName"/>
<property column="file_size" name="fileSize"/>
<property name="distro" not-null="true">
<column name="file_blob" sql-type="LONGBLOB" />
</property>
<property column="enetered_on" name="eneteredOn" type="timestamp"/>
<property column="updated_on" name="updatedOn" type="timestamp"/>
<many-to-one class="pil.pdm.model.businessobject.project.Project" column="project_id" lazy="false" name="project"/>
<many-to-one class="pil.pdm.model.businessobject.user.User" column="enetered_by" lazy="false" name="eneteredBy"/>
<many-to-one class="pil.pdm.model.businessobject.user.User" column="updated_by" lazy="false" name="updatedBy"/>
</class>
</hibernate-mapping>

=========================Table ==============================================================================

CREATE TABLE pdmfiles (
id int NOT NULL auto_increment,
project_id int(11),
reference_id int,
reference_name varchar(100),
file_name varchar(64) NOT NULL,
file_size int(10) unsigned NOT NULL,
file_blob longblob NOT NULL,
enetered_by int,
enetered_on date,
updated_by int,
updated_on date,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
======================================================================================================================

=================For Download My Code is In my Managed Bean======================

downloadFileDetailList=new ArrayList<UploadFileDetail>();

downloadFileDetailList=fileUploadDao.getFilesDetailList(id, Integer.parseInt(tabIndex));
==================================================================


=================My JSP======================

<tr><td>
<rich:dataTable id="downloadTable" width="50%" var="downLoadFile" value="#{projectDetailManageBean.downloadFileDetailList}">

<rich:column width="55">
<f:facet name="header"><hutputText value="Revision #"/></f:facet>
<hutputText value="#{downLoadFile.referenceId}" />
</rich:column>
<rich:column width="55">
<hutputLink value="downLoadFile?#{downLoadFile.id}">
<hutputText value="#{downLoadFile.uploadFileName}" />
</hutputLink>
</rich:column>
</rich:dataTable>
</td></tr>


=====================================
Some one help me now its giving HTTP Status 404 error

Thank you
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: File Download/Upload Using JSF+Richfaces+Spring+Hibenrate+MYSQL (Blob)
 
Similar Threads
Read/Write BLOB in byte[] with Hibernate in MySQL..
Hibernate Query by Example
Could not read mappings from resource: previtc/model/task/PcTaskAssignee.hbm.xml
Hibernate how to update only one colum value
How to get last insert id from one table and put in to the another table