用ASP.NET 2.0在Oracle中存取圖片(檔案)的操作

來源:互聯網
上載者:User
  有時由於某種需要(如安全性)須將圖片或檔案存放在資料庫中,當然一般情況下特別是檔案比較大的時候很多人不提倡將檔案以二進位的形式存放在資料庫中的,現將 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    

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.