程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> OracleApex實用筆記系列2-文件上傳管理

OracleApex實用筆記系列2-文件上傳管理

編輯:Oracle教程

OracleApex實用筆記系列2-文件上傳管理


1. 頁面設計

頁面A有若干region, 其中一個region用於文件列表管理(包括顯示,下載,刪除),如圖A。在頁面A有一button,點擊它會調用頁面B,頁面B負責文件上傳,如圖B。

圖A

\

圖B

\

2. 數據庫表設計

File FILE_ID Number,
FILE_DESC Varchar2(256),
CONTENT Blob,
mime_type varchar2(256),
char_set varchar2(256),
last_update date,
FILE_NAME varchar2(256)

3. Apex實現

3.1 在頁面A獲取上傳文件列表

可創建一個classic report region, region source是 select f.FILE_ID,
f.FILE_DESC,
f.FILE_NAME,
dbms_lob.getlength("FILE_CONTENT") as FILE_CONTENT,
MIME_TYPE,
CHAR_SET,
LAST_UPDATE,
'<a href="javascript:$s(''P530_DELETE_FILE'', ''' || F.FILE_ID || ''');">Delete</a>' as DELETE_FILE
from FILE f
注意: 由於BLOB不能直接映射成頁面元素,所以適用dbms_lob.getlength函數得到blob的大小作為占位符。
在報告屬性(Report Attribute)標簽,點擊FILE_CONTENT進入該cloumn的設置: 1. Number/Date Format選擇Blob; 2. Format Mask:Download; 3. Blob Table: FILE 4. Blob Column: FILE_CONTENT 5. Primary Key Column 1: FILE_ID; 6. Mimetype Column: MIME_TYPE; 7. FIlename Column:FILE_NAME; 8. Last Updated Column: LAST_UPDATE; 9. Character Set Column: CHAR_SET; 10. Download Text: Download

3.2 頁面B上傳文件

使用頁面B作為一個單獨頁面上傳的一個原因是Apex無法在一個頁面創建多個Form on a Table,換句話說,Apex的一個頁面只能創建一個Form on a Table。創建Form on a Table頁面的好處是可以由Apex幫助我們管理表格的插入,更新的細節。所以頁面B的創建只要跟著Apex創建Form on a Table向導一步一步走就可以了。
在修改FILE_CONTENT對應的item時, display as: 選File Brows 在它的setting標簽中, 1. Storage Type:Blob column specified in Item Source attribute; 2. Mimetype Column: MIME_TYPE; 3. FIlename Column:FILE_NAME; 4. Last Updated Column: LAST_UPDATE; 5. Character Set Column: CHAR_SET;

在Storage Type中,另一個選項是Table WWV_FLOW_FILES,這是Apex內置的一個用於文件上傳的表。這是Apex老版本的做法,為了向後兼容而保留。如果選擇這個選項,不同application的所有文件上傳功能都會發到這個表,筆者認為這樣文件管理會有些混亂,傾向建立自己的數據庫表來管理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved