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的全部文件上传功能都会发到这个表,笔者觉得这样文件管理会有些混乱。倾向建立自己的数据库表来管理。



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

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

    据笔者所知.Apex 4.x 是没有提供可编辑交互报告组件的.这就须要我们手动实现. 事实上这也并非非常复杂,仅仅须要简单几步. 1. 依据向导建立一个interactive report.查询语句能 ...

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

    前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...

  3. [原创]java WEB学习笔记49:文件上传基础,基于表单的文件上传,使用fileuoload 组件

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  4. maven中的pom配置文件一——spring,mybatis,oracle,jstl,json,文件上传

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

  5. struts2学习笔记之十:文件上传

    Struts2的上传 1.Struts2默认采用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.需要引入commons-fileupload相关依赖 ...

  6. PHP学习笔记--文件目录操作(文件上传实例)

    文件操作是每个语言必须有的,不仅仅局限于PHP,这里我们就仅用PHP进行讲解 php的文件高级操作和文件上传实例我放在文章的最后部分.--以后我还会给大家写一个PHP类似于网盘操作的例子 注意:阅读此 ...

  7. Spring MVC 笔记 —— Spring MVC 文件上传

    文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...

  8. HTML5 进阶系列:文件上传下载

    前言 HTML5 中提供的文件API在前端中有着丰富的应用,上传.下载.读取内容等在日常的交互中很常见.而且在各个浏览器的兼容也比较好,包括移动端,除了 IE 只支持 IE10 以上的版本.想要更好地 ...

  9. 笔记:Struts2 文件上传和下载

    为了上传文件必须将表单的method设置为POST,将 enctype 设置为 muiltipart/form-data,只有设置为这种情况下,浏览器才会把用户选择文件的二进制数据发送给服务器. 上传 ...

随机推荐

  1. Zookeeper的Quorum机制-谈谈怎样解决脑裂(split-brain)

    在使用zookeeper的过程中,我们经常会看到这样一些说法: 1.zookeeper cluster的节点数目必须是奇数. 2.zookeeper 集群中必须超过半数节点(Majority)可用,整 ...

  2. Query图像滑块插件 (支持触摸/滑动手势)

    1.http://bxslider.com/ 2.http://www.slidesjs.com/ (http://www.html5cn.org/article-6437-1.html很多歌)

  3. C#中一道关于多线程的编程题

    题目的意思是这样的:让两个线程A和B将自己的ID轮番写入一个文件中,每个线程重复十次写入后执行一个回调函数,说“I'm OK”,就这样.我是一名QA,不是开发,出于兴趣报考了公司的C#课程考试,多线程 ...

  4. android studio 报Error:failed to find Build Tools revision 23.0.0 rc2

    每个项目的build.gradle里可以设置,例如 android { .... buildToolsVersion '23.0.0 rc2' .... } 1 2 3 4 5 如下图,我的Andro ...

  5. Swif基础语法01

    import Foundation /** *  1,第一个swift程序 */ println("Hello, World!") /** *  2,定义常量 */ let cIn ...

  6. JavaScrip——对话框的简单应用(判断isNaN)

    综合运用 isNaN的用法:判断是不是一个合法的数字类型,是数字返回false,不是返回true 1.我们用prompt来接收输入的内容 2.通过isNaN来做判断 3.最后用alert输出结果 &l ...

  7. java继承2——类与继承(转)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在pu ...

  8. Spring引入配置文件

    1.spring.xml加载映射的配置配置文件 <!--采用这种方式简化配置文件--> <context:property-placeholder location="cl ...

  9. CSS(一):CSS简介和基本语法

    一.CSS简介 1.什么是CSS CSS:Cascading Style Sheet:即层叠样式表.样式定义了如何显示HTML或XHTML元素.包括对字体.颜色.边距.高度.宽度.背景图片.网页定位等 ...

  10. C++11 新特性:Lambda 表达式

    参考文章:https://blogs.oracle.com/pcarlini/entry/c_1x_tidbits_lambda_expressions 或许,Lambda 表达式算得上是 C++ 1 ...