Oracle Apex 实用笔记系列 2 - 文件上传管理
来源:互联网 发布:淘宝订单处理软件 编辑:程序博客网 时间:2024/05/16 10:37
1. 页面设计
页面A有若干region, 其中一个region用于文件列表管理(包括显示,下载,删除),如图A。在页面A有一button,点击它会调用页面B,页面B负责文件上传,如图B。
图A
图B
2. 数据库表设计
FileFILE_ID Number,
FILE_DESC Varchar2(256),
CONTENT Blob,
mime_type varchar2(256),
char_set varchar2(256),
last_update date,
FILE_NAME varchar2(256)
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
注意: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的所有文件上传功能都会发到这个表,笔者认为这样文件管理会有些混乱,倾向建立自己的数据库表来管理。
0 0
- Oracle Apex 实用笔记系列 2 - 文件上传管理
- Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧
- Oracle Apex 实用笔记系列 0
- Oracle Apex 实用笔记系列 4 - 自定义javascript
- Oracle Apex 实用笔记系列 3 - 组件只读
- Oracle Apex 实用笔记系列 6 - 可编辑交互报告 Editable Interactive Report
- Oracle Apex 实用笔记系列 7 - 用Region Selector实现标签功能
- Oracle Apex 实用笔记系列 5 - 在Apex把csv导入数据库Clob字段再导入到各自对应列的解决方法
- Oracle APEX系列(一) 安装
- Oracle APEX系列(一) 安装
- 文件管理实用类
- oracle apex升级
- Oracle APEX 3.2 安装
- Oracle APEX 3.2 安装
- Oracle Apex 4.1 安装
- Oracle APEX JavaScript APIs
- Oracle Application Express(APEX)
- Oracle EBS + APEX
- leetcode 之 Subsets
- How to Manually Update Bash to Patch Shellshock Bug on Older Fedora-Based Linux Systems
- Junit4中怎样随心所欲的执行Test(一)
- php调用C代码的方法详解
- Junit TestSuite的使用
- Oracle Apex 实用笔记系列 2 - 文件上传管理
- 杭电2544 最短路 最短路径
- php中使用exec,system等函数调用系统命令
- Greenplum分布式数据库开发入门到精通
- cheat 的安装步骤 在这简单记录一下
- Android平台下的JNI开发
- IT忍者神龟之一句sql语句——连接同一字段的所有值
- mysql 时间字段 查询 今天 昨天 最近30天
- 1106问题记录