广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-04-05 08:32:44 次阅读 稿源:互联网
    广告

      有时由于某种需要(如安全性)须将图片或文件存放在数据库中,当然一般情况下特别是文件比较大的时候很多人不提倡将文件以二进制的形式存放在数据库中的,现将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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告