Oracle Apex 实用笔记系列 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的所有文件上传功能都会发到这个表,笔者认为这样文件管理会有些混乱,倾向建立自己的数据库表来管理。

时间: 2024-08-22 02:50:32

Oracle Apex 实用笔记系列 2 - 文件上传管理的相关文章

Oracle Apex 有用笔记系列 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

Oracle Apex 实用笔记系列 0

按笔者理解,Oracle Application Express (Apex) 是oracle公司出品的,依赖于oracle数据库的一套web快速开发框架.Oracle Apex是笔者在实际开发工作中用到的一个工具.笔者发现虽然它的英文资源并不少,但可能是由于国内还不是很普遍,中文资源并不多.在实际工作中,有些蹊跷的问题很难在网络上找到中文的解决方案,所以,笔者计划把自己在实际工作中遇到的问题以及解决方案记录下来成为一个系列.这个系列本身并不是Oracle Apex教程,只是点滴的记载.如果以后

Oracle Apex 实用笔记系列 4 - 自定义javascript

对于自定义的javascript,有如下几种方式 1. 页面加载 在组件视图 1.点击 编辑page 2.在javascript标签页的Function and global variable declaration处,书写自定义的javascript函数; 3.在Execute when page loads处调用或执行javascript代码 2.Dynamic Action 1.创建一个dynamic action; 2.选择事件类型,比如change, click, page load等

Oracle Apex 实用笔记系列 1 - Oracle Apex 调试技巧

1. 理解Oracle Apex Url语法 一个Oracle Apex Url例子看上去像下面: http://myhost.mycompany.com/myservice/f?p=1023:1:220883404335693447 分为几个部分 myhost.mycompany.com 是服务器url myservice 是数据库服务 f?p=  是apex url前缀部分 1023 是application id 1 是page id 220883404335693447 是session

Oracle Apex 实用笔记系列 3 - 组件只读

1. 普通组件 对于Apex各种组件(page, region, item, button等) 可以很简单地在某种条件下设置为只读.它们的设置很类似,下面也region只读作为个例子. 在组件视图(Component View) 1. 点击某一个Region 2. 点击只读(Read only)标签 3.选择条件类型,有很多选择.简单的可以是一个表达式不为NULL或者两个表达式(不)相等.笔者常用的是PL/SQL Expression 或者PL/SQL Function body returni

Oracle Apex 实用笔记系列 6 - 可编辑交互报告 Editable Interactive Report

据笔者所知,Apex 4.x 是没有提供可编辑交互报告组件的.这就需要我们手动实现.其实这也并不是很复杂,只需要简单几步. 1. 根据向导建立一个interactive report.查询语句可以如下. select apex_item.hidden(1,e.id) || e.name as staff, apex_item.select_list_from_lov(p_idx=>2,p_value=>e.department_id,p_lov=>'lov_department') as

JS组件系列——Bootstrap文件上传组件:bootstrap fileinput

原文:JS组件系列--Bootstrap文件上传组件:bootstrap fileinput 前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签,效果不忍直视,于是博主下定决心要找一个好看的上传组件换掉它.既然bootstrap开源,那么社区肯定有很多关于它的组件,肯定也有这种常见的上传组件吧.经过一番查找,功夫不负有心人,还是被博主找到了这个组件:

PKPJIB七牛文件上传管理

圭拉镗夯後 PKPJIB七牛文件上传管理

笔记:Struts2 文件上传和下载

为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传解析器配置 Struts2 没有提供自己的请求解析器,struts2 需要调用其他上传框架来解析二进制数据,struts2 默认使用 jakarta 的 Common-FileUpload 的文件上传框架,需要在 Web 应用的 lib 中增加 commons-io-2.2.jar 和 common