选择显示字体大小

oracle中三种上载文件技术



  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类型浏览文件了。

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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons