您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > 数据库 > 正文
Oracle中三种上载文件技术
[文章信息]
作者:曹飞
时间:2003-08-01
出处:yesky
责任编辑:方舟
[文章导读]
Oracle中有多种方法可以向数据库或服务器文件系统上载文件,这里主要介绍如下三种
advertisement
热点推荐
· 天极网软件频道改版调查
· 在ASP.NET程序中创建唯一序号
· 用JVM工具接口创建调试和分析代理
· Win 2000如何安装配置防火墙
· 防范Windows消息钩子的侵入
[正文]

1 2  下一页



  Oracle中有多种方法可以向数据库或服务器文件系统上载文件,这里主要介绍如下三种:Oracle HTTP Server(OHS)的mod_plsql模块提供通过web页面向数据库上载文件的功能;Oracle 9iAS的标签库和Bean提供的文件上载功能;通过JDBC程序上载文件。

  一、Oracle HTTP Server(OHS)的mod_plsql模块提供通过web页面向数据库上载文件的功能

  1.在文件上载的目标模式中建立文档访问表

CREATE TABLE [table_name] (
NAME VARCHAR2(256) UNIQUE NOT NULL,
MIME_TYPE VARCHAR2(128),
DOC_SIZE NUMBER,
DAD_CHARSET VARCHAR2(128),
LAST_UPDATED DATE,
CONTENT_TYPE VARCHAR2(128),
[content_column_name] [content_column_type]
[ , [content_column_name] [content_column_type]]
);

  表中CONTENT_TYPE列为BLOB或long raw,但只能有一列。每个上载文件在表中单独占有一行,不能同时把多个文件上载到表中的同一行内,这是mod_plsql模块功能有限的地方。用下面和列建立文档表:Content_table。

NAME VARCHAR(128) UNIQUE NOT NULL,
MIME_TYPE VARCHAR(128),
DOC_SIZE NUMBER,
DAD_CHARSET VARCHAR(128),
LAST_UPDATED DATE,
CONTENT_TYPE VARCHAR(128),
CONTENT LONG RAW,
BLOB_CONTENT BLOB ;

  2.配置DAD的文档访问表

  启动数据库和OHS后,创建空白的数据库访问描述符。在"数据库访问描述符"页面的"网关使用文档表"信息向与此数据库访问描述符关联的数据库上载/下载文档。缺省情况下所有文档都将以 BLOB 上载。通过在 Long Raw 字段中指定以逗号分隔的文件扩展名,可以覆盖此缺省设置。此字段的*值将使所有文档以 Long Raw 上载。"文档访问过程"指定用于访问文档的虚拟路径。"文档访问过程"字段指定网关处理文档请求所调用的过程。这里指定缺省的文档表为content_table。

  3.提供文件上载页面,这里使用存储过程的形式上载和浏览、下载文件。

CREATE OR REPLACE PROCEDURE "ZYFILEUP"."IN_FILE" is
begin
htp.prn('
<html>
<head>
<title>File upload</title>
</head>
<body bgcolor="#C0C0C0">
<form enctype="multipart/form-data" action="/pls/upfile/write_infos" method="POST">
<p><b><font size="5" color="#800080">指定上载文件</font></b></p>
<hr>
<p>
<b>标题:<textarea rows="3" name="filetitle" cols="100" style="background-color: #008080; color: #FFFFFF"></textarea> <br>
<b>类别:<input type="text" name="filesort" size="130" style="background-color: #008080; color: #FFFFFF"> <br>
<b>作者:<input type="text" name="author" size="130" style="background-color: #008080; color: #FFFFFF"> <br>
<b>小类:<input type="text" name="localsort" size="130" style="background-color: #008080; color: #FFFFFF"> <br>
<b>摘要:<textarea rows="5" name="abstract" cols="130" style="background-color: #008080; color: #FFFFFF"></textarea> <br>
<b>文章1:<input type="file" name="up_file" size="110" style="background-color: #008080; color: #FFFFFF"> <br>
<b>文章2:<input type="file" name="up_file" size="110" style="background-color: #008080; color: #FFFFFF"> <br>
<b>文章3:<input type="file" name="up_file" size="110" style="background-color: #008080; color: #FFFFFF"> <br>
<b>文章4:<input type="file" name="up_file" size="110" style="background-color: #008080; color: #FFFFFF"> <br>
</b></b></b></b></b></b></b></b></b></b> </p><hr><p><b>
<line>
<input type="submit" value="提交">
<input type="reset" value="全部重写">
</p>
</form>
</body>
</html>
');
end;

  4.提供上载文件浏览页面

  第3步提交的文件自动上载到文档表中,下面由存储过程WRITE_INFOS来记录上载的文件信息,实际上完全没必要,但这里做一比较。

CREATE OR REPLACE PROCEDURE "ZYFILEUP"."WRITE_INFOS" (
filetitle in varchar2,
up_file in owa.vc_arr,
filesort in varchar2,
author in varchar2,
abstract in varchar2,
localsort in varchar2
) is
i number:=1;
begin
htp.htmlopen;
htp.headopen;
htp.title('File Uploaded');
htp.headclose;
htp.bodyopen;
htp.header(1, 'Upload Status');
while true loop
begin
htp.prn('Uploaded '|| up_file(i) ||' successfully !');
htp.prn('<br>');
htp.prn('<a href="/pls/upfile/downfile?upfilename=');
htp.prn(utl_url.escape(up_file(i),true,'GBK'));
htp.prn('" target="_blank">Open this file !</a>');
htp.prn('<br>');
INSERT INTO "ZYFILEUP"."FILE_TABLE"
values(filetitle,up_file(i),filesort,author,sysdate(),abstract,localsort);
commit;
i:=i+1;
exception
when no_data_found then exit;
end;
end loop;
htp.line;
htp.print('Uploaded successfully !');
htp.bodyclose;
htp.htmlclose;
end;

  查阅文档表后会发现,文件已经上载了,但文档表的上载时间有错误,与上载记录中的系统时间不符,这可能是该功能的一个BUG,如果谁有解决此问题的办法或软件补丁,请告诉我。

  5.为上载文件提供页面浏览功能

CREATE OR REPLACE PROCEDURE "ZYFILEUP"."DOWNFILE" (upfilename
in varchar2)
is
mimetype varchar2(100);
myblob blob;
begin
select mime_type,blob_content into mimetype,myblob
from zyfileup.content_table where name = upfilename;
owa_util.mime_header(mimetype, true);
sys.wpg_docload.download_file(myblob);
end;

  这样可以通过Web浏览器根据上载文件的mime_type类型浏览文件了。

  这种上载文件的办法最为简单,可以支持中文文件名,支持客户端文件上载和下载,可以自动识别文件类型和计算文件大小。


1 2  下一页

·"WAP天极之IT新闻资讯,50万元等你拿"    ·天极WAP之游戏狂图,50万元等你下载

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容阅读排行榜
  • Access2000迁移到Oracle9i要点
  • Oracle 9i轻松取得建表和索引的DDL语句
  • 主板超频特色技术GIGA技嘉篇
  • Win 2000如何安装配置防火墙
  • 防范Windows消息钩子的侵入
  • 性价比之选 AGP显卡的告别秀
  • 大学校园生活之聊天也疯狂
  • Fireworks制作GIF动画Banner
  • 金山打击外挂 遭网络游戏玩家起诉
  • 完全公测《开天》掀起滔滔巨浪
  • Advertisement

    天极无线
    待机彩图    >>更多
    多彩动画    >>更多
    美妙和弦    >>更多
    天使在唱歌
    壁虎漫步
    PrettyBoy
    LoveLoveLove
    我是你的小小狗
    单身情歌
    十面埋伏
    祝酒歌
    回心转意
    波斯猫
    太委屈
    S.H.E
    潘玮柏
    M2M
    蔡依林
    阿牛
    林志炫
    陈弈迅
    刀郎
    黑龙
    S.H.E
    陶晶莹
    情人玫瑰坊
    音乐风云
    新片速递
    神秘测试
    都市约会
    ·天极彩信天天精彩
    ·图铃梦工厂下载无限!
    ·找寻童真,卡通专题
    ·夏日激情交友社区!
    ·星座运程,预测人生

    CSEEK搜索