溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

.Net中如何存儲(chǔ)和讀取二進(jìn)制形式的文件

發(fā)布時(shí)間:2021-10-11 15:15:01 來(lái)源:億速云 閱讀:141 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章給大家分享的是有關(guān).Net中如何存儲(chǔ)和讀取二進(jìn)制形式的文件的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

.Net下圖片的常見(jiàn)存儲(chǔ)與讀取凡是有以下幾種:
存儲(chǔ)圖片:
以二進(jìn)制的形式存儲(chǔ)圖片時(shí),要把數(shù)據(jù)庫(kù)中的字段設(shè)置為Image數(shù)據(jù)類(lèi)型(SQL Server),存儲(chǔ)的數(shù)據(jù)是Byte[].

1.參數(shù)是圖片路徑:返回Byte[]類(lèi)型:

代碼如下:


public byte[] GetPictureData(string imagepath)
        {
            ////根據(jù)圖片文件的路徑使用文件流打開(kāi),并保存為byte[]  
            FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重載方法
            byte[] byData = new byte[fs.Length];
            fs.Read(byData, 0, byData.Length);
            fs.Close();
            return byData;
        }


2.參數(shù)類(lèi)型是Image對(duì)象,返回Byte[]類(lèi)型:

代碼如下:


public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
        {
            //將Image轉(zhuǎn)換成流數(shù)據(jù),并保存為byte[]  
            MemoryStream mstream = new MemoryStream();
            imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
            byte[] byData = new Byte[mstream.Length];
            mstream.Position = 0;
            mstream.Read(byData, 0, byData.Length);
            mstream.Close();
            return byData;
        }


好了,這樣通過(guò)上面的方法就可以把圖片轉(zhuǎn)換成Byte[]對(duì)象,然后就把這個(gè)對(duì)象保存到數(shù)據(jù)庫(kù)中去就實(shí)現(xiàn)了把圖片的二進(jìn)制格式保存到數(shù)據(jù)庫(kù)中去了。下面我就談?wù)勅绾伟褦?shù)據(jù)庫(kù)中的圖片讀取出來(lái),實(shí)際上這是一個(gè)相反的過(guò)程。

讀取圖片:把相應(yīng)的字段轉(zhuǎn)換成Byte[]即:Byte[] bt=(Byte[])XXXX

1.參數(shù)是Byte[]類(lèi)型,返回值是Image對(duì)象:

代碼如下:


public System.Drawing.Image ReturnPhoto(byte[] streamByte)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
            System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
            return img;
        }


2.參數(shù)是Byte[] 類(lèi)型,沒(méi)有返回值,這是針對(duì)asp.net中把圖片從輸出到網(wǎng)頁(yè)上(Response.BinaryWrite)

代碼如下:


public void WritePhoto(byte[] streamByte)
        {
            // Response.ContentType 的默認(rèn)值為默認(rèn)值為“text/html”
            Response.ContentType = "image/GIF";
            //圖片輸出的類(lèi)型有: image/GIF  image/JPEG
            Response.BinaryWrite(streamByte);
        }


補(bǔ)充:
針對(duì)Response.ContentType的值,除了針對(duì)圖片的類(lèi)型外,還有其他的類(lèi)型:

代碼如下:


Response.ContentType = "application/msword";
Response.ContentType = "application/x-shockwave-flash";
Response.ContentType = "application/vnd.ms-excel";


另外可以針對(duì)不同的格式,用不同的輸出類(lèi)型以適合不同的類(lèi)型:

代碼如下:


switch (dataread("document_type"))
            {
                case "doc":
                    Response.ContentType = "application/msword";
                case "swf":
                    Response.ContentType = "application/x-shockwave-flash";
                case "xls":
                    Response.ContentType = "application/vnd.ms-excel";
                case "gif":
                    Response.ContentType = "image/gif";
                case "Jpg":
                    Response.ContentType = "image/jpeg";
            }


一些相關(guān)的東西,可以作為參考

代碼如下:


Image image= GetImageFromClipboard();//實(shí)現(xiàn)從剪切板獲取圖像的功能
System.IO.MemoryStream stream = new System.IO.MemoryStream();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter formatter
= new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); formatter.Serialize(stream, image);

FileStream fs=new FileStream("xx",FileMode.Open,FileAccess.Write);
fs.Write(stream.ToArray(),0,stream.ToArray().Length);

感謝各位的閱讀!關(guān)于“.Net中如何存儲(chǔ)和讀取二進(jìn)制形式的文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI