關於ASP.NET中圖片上傳到MSSQL資料庫以及讀取的方法

來源:互聯網
上載者:User
    這篇文章非常非常簡單,只是一個基本代碼的筆記而已。所以,已經知道方法的同學可以出去了。

       地球人都知道我們為什麼要把檔案上傳到資料庫裡,所以原因我也懶得說。

        預備工作:
        在資料庫方面,我們需要有一個欄位,類型為Image,用來放圖片的內容。

        第一步,上傳:
        我還是按照我最常用的Info-Persister方式。Info類中這個欄位對應的屬性類型為byte[]。然後,在上傳組件的PostFile中,從它的InputStream讀出位元組數組,就OK了。

1 int len = this.File1.PostedFile.ContentLength;
2 byte[] buf = new byte[len];

4 Stream i = this.File1.PostedFile.InputStream;
5 i.Read(buf,0,buf.Length);
6 ti.content=buf; //賦給Info的一個屬性
7 i.Close();

        得到了Info就可以按常規使用Persister的create來寫入資料庫了,也沒有什麼不一樣的。
        因為我比較偷懶,用的是 object[] 作為預存程序的參數,而不是setParameter方法。

        第二步,顯示:
        圖片的顯示也很簡單,在Persister中注意一下:

1 SqlDataReader reader=SqlHelper.ExecuteReader(conStr,"p_hello_get",objs);

3 if( reader.Read() )
4 {
5 ti.name=reader.GetString(1);
6 ti.content=(byte[])reader[2]; //最簡單快速的方法就是這樣
7 }
8 reader.Close();

        當然,如果你不喜歡強制轉型,還可以這樣:

1 ti.content=reader.GetSqlBinary(2).Value;

        有了byte[]的內容,要顯示也比較簡單,在Page_Load()方法中加兩句話即可:

Response.ContentType="image/jpeg";
Response.BinaryWrite(ti.content);

        這樣就可以輸出映像了,但是有一點要注意的是,如果想對映像做一點調整(比如旋轉,轉換格式之類的),或者想知道圖片的格式(是jpg 還是 gif),你也可以這樣:

 1 //同樣,聲明輸出不是HTML而是image
 2 Response.ContentType="image/jpeg";
 3 
 4 //從byte[]得到一個image對象
 5 System.Drawing.Image bmap = Bitmap.FromStream(new MemoryStream(ti.content));
 6 //操作一下這個映像
 7 bmap.RotateFlip(RotateFlipType.Rotate180FlipY);
 8 
 9 //輸出到頁面上
10 bmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
11 
12 //釋放image
13 bmap.Dispose();
14 

        當然,如何在asp中動態顯示映像,我就不多說了。無非就是讓<img src=指向一個aspx檔案,然後在這個aspx檔案中設定它的輸出不是HTML而是image即可。

 

       

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.