首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

richfaces中下传组件的使用

2012-10-30 
richfaces中上传组件的使用前沿:JSF本身并没有提供上传组件,如果使用原生的JSF做上传工具,你可能需要做更

richfaces中上传组件的使用

前沿:JSF本身并没有提供上传组件,如果使用原生的JSF做上传工具,你可能需要做更多的额外操作。幸运的是richfaces知道了我们的苦衷,它提供了高效可控的上传组件<richfaces:fileUpload/>,下面简单给你大家介绍一下如何使用。

?

?

1.web.xml中的配置

?

? 如果你需要对文件上传的大小提供阀值控制,可以设定,具体参考richfaces的文档。否则我们不做更多处理。

? 如果你需要配置的自己的文件系统路径,你可以在context-param中配置路径。

?

上面就是我们的fileUpload上传组件,它的一些属性,很容易理解,当然你可以参考文档。主要看rentPhoto.upload这个侦听器是如何工作的。

?

?

?

3.java部分

?

import org.richfaces.event.UploadEvent;import org.richfaces.model.UploadItem;public class RentPhoto { ..... public void upload(UploadEvent event) throws Exception{FacesContext context=FacesContext.getCurrentInstance();ExternalContext ec=context.getExternalContext();//获取servlet,其实你可以一步到位获取    ServletContext sc=(ServletContext)ec.getContext();//上传项,item里封装了上传文件的所有数据,同时包含http数据        UploadItem item = event.getUploadItem();        Date date=new Date(System.currentTimeMillis());//解码文件名,当文件命中有中文等其他字符时,你必须这么做        String temp_path=java.net.URLDecoder.decode(item.getFileName(),"utf-8");//找到文件名,如下操作,你可以根据自己的需要进行优化,具体可以看看java API中I/O流File        if(temp_path.lastIndexOf('.')<0){        return;        }        if(item.getFileSize()>512000){        return;        }//重命名文件,保留格式。如果你有自己的压缩工具、水印等操作,在此可以加入。。MD5方法是自己写的,你可以使用其他的重命名文件的方案        String fileName=MD5.Md5(date.toString())+temp_path.substring(temp_path.lastIndexOf('.'));//web站点,简单文件系统路径,web.xml中配置        FileOutputStream out=new FileOutputStream(sc.getRealPath(sc.getInitParameter("rentImagesPath"))+"/"+fileName);        out.write(item.getData());        out.close();//保存文件名到数据库,文件保存在文件系统中。以下代码仅供参考,请使用自己的数据库操作方式:保存文件的文件名到系统.如果你没有设置文件系统,可以把图片保存在数据库中        Session session=HibernateInit.currentSession();        RPhoto photo=new RPhoto(fileName,rent.getId());        new RPhotoOper().update(session, photo);        HibernateInit.closeSession();//异步操作,加入列表       photoList.add(photo);    }  }

?

?

热点排行