General Multimedia Data Processing Based on ASP.NET and Oracle
LIN Wei
(Department of Computer Science, Sichuan Police College, Luzhou 646000, China)
Abstract: In order to upload an browse multimedia data when we development database application program,there are generally two ways to store such data files,and their respective advantages and disadvantages as the paper we discussion. In this paper we expound general multimedia data processing base on asp.net and oracle,introduce document and image file's upload and read on this platform,also we give the achieve code in this paper.
Key words: ASP.NET; Oracle; multimedia data
1 概述
在开发数据库应用程序的过程中,经常会遇到需要存储的不仅仅是简单的文字信息,而且还有一些多媒体数据,如文档、图片、音像资料等等。通常有两种方法来存储这些多媒体数据,一种方法是存储在Web服务器的文件系统上并添加一个对数据库中相应文件的引用,另一种方法则是直接存储在数据库中。
将数据以文件方式存放到服务器上,并将与数据相关的信息和路径存入对应的数据表中,这种方式需要较少的工作,而存储和检索存储在数据库中的二进制需要更多的编码工作。而且,更新这些二进制数据也会因为不需要与数据库通讯而更为容易,只须直接修改文件即可,从而提高数据库操作速度,故通常被基于B/S的系统所广泛采用。这样处理多媒体数据虽然简单易行,但是这样处理这种类型的字段时,并没有把数据真正存储到数据库中,将带来很多弊端:它不仅破坏了数据的完整性,而存储在磁盘上的文件容易被误操作所删除或者损害,给应用留下了严重的隐患;另外,使用文件系统,无法有效防止非法用户的非授权访问,一旦多媒体文件链接被显示,任何用户就可不经授权,直接访问,造成版权维护困难。而把数据直接存储在数据库的主要优点在于,它能够使数据成为“自包含的”。既然所有的数据都包含在数据库中,那么,数据支持、数据在数据库服务器间的移动以及数据库复制等就容易得多,因为不存在担心复制或备份存储在文件系统中的二进制内容这样的问题。当然,至于选择哪种存储方案还是要依赖两种方案的优缺点根据具体实际的使用场所和业务需要来作出决定。
本文所阐述的基于第二种存储方案即直接将多媒体数据存储在数据库中。本文所用的数据库为Oracle9i,Oracle数据库提供了一种BLOB的数据类型,专门用来存放多媒体数据,最大容量为4GB,足以存放大多数的多媒体数据。开发平台为VS.NET 2005,开发工具使用ASP.NET,使用C#语言实现,结合作者开发Oracle数据库应用系统中对多媒体数据的处理,总结了一些开发经验,分析了基于ASP.NET和Oracle情况下将数据直接存储在数据库内的Word文档和图片的上传和读取的具体实现过程,对于其它多媒体数据如音频文件和视频文件也可类似的实现。
2数据库设计
2.1 表的设计
首先创建数据库表T_DATA,其字段名称及相应的数据类型如表1所示。
SQL语句为:
CREATE TABLE T_DATA(
FI_ID INTEGER NOT NULL,
FB_FILE BLOB NULL,
FS_FORMAT VARCHAR(20) NULL);
2.2 数据库序列对象
为了实现ID的自动增加,建立数据库序列对象[1]如下:
CREATE SEQUENCE "S_ID" INCREMENT BY 1 START WITH 1
MAXVALUE 1.0E28 MINVALUE 1 NOCYCLECACHE 20 NOORDER ;
3 文件的上传
3.1 上传的WEB窗体页面
新建Web窗体页面UpFile.aspx, 此页面允许访问者上传图片等多媒体数据到这个应用程序中。一旦上传,一个新的记录将被添加到T_DATA表格并且该文件的内容即被存储在新的记录的FB_FILE列内。为了实现在ASP.NET中把文件从Web浏览器端上传到Web服务器,我们使用了FileUpload控件[2],FileUpload控件将在用户的浏览器端生成为标准的文件上传形式——一个"Browse"按钮(当点击它时)允许用户从他们的硬盘中选择一个文件上传到web服务器。用户选择一个文件并且寄送了这个表单(通过点击" btn_up "按钮),那么,指定文件的二进制内容即被寄送到Web服务器。
3.2 7B7B上传的C#代码
首先在UpFile.aspx.cs文件中导入两个命名空间:using System.I0;using System.Data.OracleClient[3]。其中System.IO命名空间包含允许在数据流和文件上进行同步和异步读取及写入的类型,其中的Stream抽象类支持对字节的读写操作。System.Data.OracleClient命名空间是用于Oracle的.NETFramework数据提供程序,描述了用于访问托管空间中Oracle数据源的类集合[4]。双击“上传”按钮,在响应事件的方法中添加上传文件代码:
protected void btn_up_Click(object sender, EventArgs e){
try{
string connstr = ConfigurationManager.AppSettings["oracledb"];
oracleConnection oracleConnection1 = new OracleConnection(connstr);
oracleConnection1.Open(); //连接数据库
string str_sql = "insert into T_DATA(FI_ID,FB_FILE,FS_FORMAT)
values(S_ID.NEXTVAL,:FB_FILE,:FS_FORMAT)";
OracleCommand oracleCommand1=new OracleCommand(str_sql,oracleConnection1);
HttpPostedFile up_file = fup_file.PostedFile;
//HttpPostedFile对象,用于读取图片文件属性
string file_type = up_file.FileName.Substring(up_file.FileName.LastIndexOf('.'), up_file.FileName.Length - up_file.FileName.LastIndexOf('.')).Trim().ToLower();
//获取文件格式
int up_file_length = up_file.ContentLength;//获取上载文件的字节大小
byte[] file_array = new Byte[up_file_length];//文件临时储存Byte
Stream file_stream = up_file.InputStream;
//建立一个Stream 对象,该对象指向一个上载文件,以准备读取该文件的内容 (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)