file_stream.Read(file_array,0,up_file_length); //读取数据到临时存储体file_array, 0代表数组指针的起始位置,FileLen代表指针的结束位置oracleCommand1.Parameters.Add(new OracleParameter(FB_FILE,OracleType.
file_stream.Read(file_array,0,up_file_length);
//读取数据到临时存储体file_array, 0代表数组指针的起始位置,FileLen代表指针的结束位置oracleCommand1.Parameters.Add(new OracleParameter("FB_FILE",OracleType.Blob)); oracleCommand1.Parameters["FB_FILE"].Value=file_array; //给参数赋值
oracleCommand1.Parameters.Add(new OracleParameter("FS_FORMAT", OracleType.VarChar, 20));oracleCommand1.Parameters["FS_FORMAT"].Value = file_type; oracleCommand1.ExecuteNonQuery();
oracleConnection1.Close();
}
catch (Exception ex) {
Response.Write("数据出错原因" + ex.Message);
Response.End();
}
}
通过以上的C#后置代码的处理就可以把上传的多媒体数据文件以二进制的形式存放在数据库中。
4 文件的读取
无论使用什么技术把数据存储在数据库中,为了检索并显示二进制数据,我们创建一个新的Web窗体文件ReadFile.aspx页面。从工具箱中拖入Image控件,用于当上传文件为图片时来显示图片。在ReadFile.aspx中,将通过QueryString把一个ID传递给它,来获取要读取文件的ID值,同样的在ReadFile.aspx.cs文件中导入命名空间:using System.I0;using System.Data.OracleClient;在Page_Load中添加如下代码:
protected void Page_Load(object sender, EventArgs e) {
try{
……//连接数据库
int int_id = Convert.ToInt32(Request.QueryString("ID"));
//获取要读取文档的ID值
string str_sql = "select * from T_DATA where fi_id=" + int_id + "";
OracleCommand oracleCommand1 = new OracleCommand(str_sql, oracleConnection1);
OracleDataReader oracleDataReader1 = oracleCommand1.ExecuteReader();
//读出数据
while (oracleDataReader1.Read()){
if(oracleDataReader1[2]== ".doc"){//文件是WORD
byte[] byte_blob = (byte[])dr["fb_file"];
Response.ContentType = "application/msword";
//确定输出格式
Response.BinaryWrite(byte_blob);
//将一个二进制字符串写入HTTP输出流
Response.Flush();
//立即发送缓冲区中的输出
Response.Close();
Response.End();
}
else{//文件是图片
Image1.Visible = true;
byte[] image_buffer = (byte[])dr[0];
Response.BinaryWrite(image_buffer);
}}
oracleDataReader1.close();
oracleConnection1.Close();
}
catch (Exception ex) {
Response.Write("数据出错原因" + ex.Message);
Response.End();
}}
这样就可以把文件为Word文档的数据读取到MICROSOFT WORD中显示出来,如果是图片文件通过上面的设置和代码就可以把图片正常的显示在Image控件上[5]。
5 结束语
当开发数据库应用程序遇到需要上传和读取多媒体数据时,开发者必须决定是把多媒体数据存储在文件系统中或是直接存储在数据库内,两种方案都存在各自的优点与缺点。在本文中,我们分析了基于ASP.NET和Oracle开发平台下将数据直接存储在数据库内的Word文档和图片的上传和读取的具体实现过程,至于音频文件和视频文件的存储当然也可以根据需要类似的实现。
参考文献:
[1] 赵松涛.Oracle 9i数据库系统管理[M].北京:人民邮电出版社,2003.
[2] 李应伟.ASP.NET数据库高级教程[M].北京:清华大学出版社,2004.
[3] 多尼·迈克.ASP.NET数据驱动Web开发[M].北京:中国电力出版社,2003.
[4] 颜波,孙宏波,杨融菲.基于ASP_NET和Oracle数据库的图片上传和查看[J].计算机工程,2005,31(24):207-209.
[5] 高英,郭荷清.基于改进的ADO.NET的通用数据库引擎的设计与实现[J].计算机应用,2005,25(1):35-38.
(责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%
版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.