用ASP.NET 2.0在Oracle中存取图片(文件)的操作

 
有时由于某种需要(如安全性)须将图片或文件存放在数据库中,当然一般情况下特别是文件比较大的时候很多人不提倡将文件以二进制的形式存放在数据库中的,现将 Oracle 中文件的存取整理如下(思路和在 SQL Server2000 中存取一样,存储时在数据中存放图片或文件的二进制字节流,读出时将数据库中对应字段读取到字节数据,然后输出):
       1
、在 TOAD SQLPlus 中创建一下数据库表。
 

1CREATE TABLE TEST_TABLE
2(
3  ID     VARCHAR2(36 BYTE),
4  NAME   VARCHAR2(50 BYTE),
5  PHOTO  BLOB
6)
7
 
2 、新建一个 ASPX 页面,在页面上放一个 FileUpload 控件,命名为 fileUp ,放置两个按钮分布为 btnSave (保存), btnRead (读取)。
3
、在 btnSave 的事件中执行一下代码,用来保存图片或文件:
 

保存图片(文件)到 Oracle
 1StringBuilder sbSQL = new StringBuilder("insert into Test_Table(ID,Name,Photo) values(:ID,:Name,:Photo)");
 2        OracleConnection cn = new OracleConnection(strCn);
 3        OracleCommand cmd = cn.CreateCommand();
 4        cmd.CommandText = sbSQL.ToString();
 5        cmd.Parameters.Add(":ID", OracleType.VarChar, 36).Value = Guid.NewGuid().ToString();
 6        cmd.Parameters.Add(":Name", OracleType.VarChar, 50).Value = fileUp.FileName; ;
 7        int intLen = fileUp.PostedFile.ContentLength;
 8        byte[] pic = new byte[intLen];
 9        fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
10        cmd.Parameters.Add(":Photo", OracleType.Blob).Value = pic;
11        try
12        {
13            cn.Open();
14            cmd.ExecuteNonQuery();
15        }
16        catch (Exception ex)
17        {
18            Response.Write(ex.Message);
19        }
20        finally
21        {
22            cn.Close();
23        }
24
 
  4 、读取方法如下:
 

Oracle 中读取图片(文件)
 1OracleConnection cn = new OracleConnection(strCn);
 2OracleCommand cmd = cn.CreateCommand();
 3cmd.CommandText = "select photo from test_table";
 4try
 5{
 6    cn.Open();
 7    MemoryStream stream = new MemoryStream();
 8    IDataReader reader = cmd.ExecuteReader();
 9    if (reader.Read())
10    {
11        byte[] pic = (byte[])reader[0];
12        //byte[] pic = (byte[])cmd.ExecuteScalar();
13        stream.Write(pic, 0, pic.Length);
14        //Bitmap bitMap = new Bitmap(stream);
15        //Response.ContentType = "image/Jpeg";
16        //bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
17        //
注释部分可以将图片显示在 IE 中,而不是下载图片,
18        //
下面的方法直接下载文件  
19        Response.ContentType = "application/octet-stream";
20        Response.AddHeader("Content-Disposition", "attachment;FileName= demo.JPG");
21        Response.BinaryWrite(pic);
22        Response.End();
23    }
24
25}
26catch (Exception ex)
27{
28    Response.Write(ex.Message);
29}
30finally
31{
32    cn.Close();
33}
34
http://www.cnblogs.com/weiweictgu/archive/2006/11/17/563761.html


参考示例 : http://www.5h6.com/article/28011.html
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值