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



  • 相关阅读:
    yum源及rpm、源码包
    iptables详解和应用
    Samba服务器设置
    FTP虚拟用户
    FTP服务器配置
    at 计划任务
    配置telnet服务
    C# 事件和委托的用途及区别
    C# socket——简单的TCP 服务端-客户端 连接通信
    检出的svn项目中的.idea文件夹可以删除
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6698518.html
Copyright © 2011-2022 走看看