创建数据表的sql语句 CREATE TABLE BLOB_TABLE ( ID NUMBER(4) NOT NULL, FILE_NAME VARCHAR2(4000) NOT NULL, UPLOAD_DATE DATE, STORED_FILE BLOB NOT NULL ); ALTER TABLE BLOB_TABLE ADD CONSTRAINT BLOB_TABLE_PK PRIMARY KEY ( ID ) ENABLE ; CREATE SEQUENCE SEQ_BLOB_TABLE INCREMENT BY 1 START WITH 1 MINVALUE 1 ; CREATE OR REPLACE TRIGGER trg_blob_table BEFORE INSERT ON blob_table FOR EACH ROW BEGIN SELECT seq_blob_table.NEXTVAL INTO :NEW.id FROM dual; END; / 创建上传附件页面,代码如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page contentType="text/html;charset=windows-1250"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh"%> <%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr"%> <f:view> <trh:html binding="#{UploadingBean.html1}" id="html1"> <trh:head title="uploading" binding="#{UploadingBean.head1}" id="head1"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/> </trh:head> <trh:body binding="#{UploadingBean.body1}" id="body1"> <tr:messages binding="#{UploadingBean.messages1}" id="messages1"/> <tr:form binding="#{UploadingBean.form1}" id="form1" usesUpload="true"> <tr:panelBox binding="#{UploadingBean.panelBox1}" id="panelBox1" text="Upload new file"> <trh:rowLayout binding="#{UploadingBean.rowLayout1}" id="rowLayout1" halign="center"> <tr:inputFile binding="#{UploadingBean.inputFilePath}" id="inputFilePath" required="true" valueChangeListener="#{UploadingBean.onUploading}"/> </trh:rowLayout> <trh:rowLayout binding="#{UploadingBean.rowLayout2}" id="rowLayout2" halign="center"> <tr:panelButtonBar binding="#{UploadingBean.panelButtonBar1}" id="panelButtonBar1"> <tr:commandButton text="Upload" binding="#{UploadingBean.uploadButton}" id="uploadButton" action="#{UploadingBean.uploadAction}"/> <tr:commandButton text="Upload new" binding="#{UploadingBean.newButton}" id="newButton" action="#{UploadingBean.newUpload}" rendered="false"/> <tr:commandButton text="Close window" binding="#{UploadingBean.commandButton3}" id="commandButton3" immediate="true"> <tr:returnActionListener/> </tr:commandButton> </tr:panelButtonBar> </trh:rowLayout> </tr:panelBox> </tr:form> </trh:body> </trh:html> </f:view> <%-- oracle-jdev-comment:auto-binding-backing-bean-name:UploadingBean--%> 创建下载页面,代码如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page contentType="text/html;charset=windows-1250"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <%@ taglib uri="http://myfaces.apache.org/trinidad/html" prefix="trh"%> <%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr"%> <f:view> <trh:html binding="#{DownloadingBean.html1}" id="html1"> <trh:head title="downloading" binding="#{DownloadingBean.head1}" id="head1"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/> </trh:head> <trh:body binding="#{DownloadingBean.body1}" id="body1"> <tr:messages binding="#{DownloadingBean.messages1}" id="messages1"/> <h:form binding="#{DownloadingBean.form1}" id="form1"> <tr:panelButtonBar binding="#{DownloadingBean.panelButtonBar2}" id="panelButtonBar2"> <tr:commandButton text="Upload new file" binding="#{DownloadingBean.uploadButton}" id="uploadButton" action="dialog:upload" windowHeight="300" windowWidth="300" useWindow="true" returnListener="#{DownloadingBean.afterUploading}" partialTriggers="uploadButton" partialSubmit="true"/> </tr:panelButtonBar> <tr:separator binding="#{DownloadingBean.objectSeparator1}" id="objectSeparator1"/> <tr:table value="#{bindings.BlobTable.collectionModel}" var="row" rows="#{bindings.BlobTable.rangeSize}" first="#{bind