C#圖片轉換成二進制流並且保存到sql server數據庫


注意:我要存儲文件二進制流的列的類型是text,不是image類型。

我已經實現了從數據庫中讀取text類型的二進制流,,現在就是不知道怎么存進去.

我的部分關鍵代碼:

StreamReader sr = new StreamReader(FilePath, System.Text.Encoding.GetEncoding("GB2312"), true);

string filetext = sr.ReadLine();//這是要存進數據庫的文件二進制流文本

 

他們告訴我具體該用FileStream這個類來讀取...但是我不知道怎么用...

上面我的代碼存到數據庫后,我再讀取出來二進制流轉換成文件后,圖片就無瀏覽..估計是我的代碼是沒有讀完二進制流就保存到數據庫了...

 

說明:上面如果保存圖片二進制流成功存到數據庫后,在數據庫看到的值可能是:“BM諪”是這樣的..

 

我的這種方法是錯誤的...希望大家能幫我看看,應該怎么改...

非常感謝..

問題補充:

數據庫存儲二進制流的列的類型不是image,而是text類型 ,我的讀取二進制字符串已經可以轉換成文件了...現在就是把二進制字符串保存到數據庫的時候有問題..

這是我把文件轉換為二進制字符串的代碼

 string FilePath = this.openFileDialog1.FileName;                        //得到文件路徑

 string filename = FilePath.Substring(FilePath.LastIndexOf("\\") + 1);   //得到上傳文件的文名  

string filetext =string.Empty;

 FileStream fs = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Read);

 Byte[] fileByte = new Byte[(int)fs.Length];

 fs.Read(fileByte, 0, fileByte.Length);

 filetext = System.Text.Encoding.Default.GetString(fileByte); //將指定字節數組中的說有字節解碼為一個字符串

fs.Close();

其他回答 共4條

System.IO.FileStream fs = new System.IO.FileStream(圖片路徑, FileMode.OpenOrCreate, FileAccess.Read);

        byte[] fileByte = new byte[fs.Length];

        fs.Read(fileByte, 0, (int)fs.Length);

 

 

然后將fileByte存到庫里就行了。

回答者: kgdxpr | 四級 | 2010-5-19 16:59

text,你就當string處理就行了

思路就是先得到圖片文件的對象,然后轉成byte[]

然后轉成string

text存儲二進制文件不如image好,可能小文件速度變的慢

回答者: howeverlee | 五級 | 2010-5-19 17:04

FileStream stream;

IFormatter iFormatter = new BinaryFormatter();

                stream = new FileStream("圖片);

//序列化

                formatter.Serialize(stream, "目標");

stream.Close();

 

//讀取的時候用反序列化

formatter.Deserialize()

//轉化為圖片格式

回答者: hack6500 | 三級 | 2010-5-19 18:19

private Byte[] getphoto(string photopath)   //讀取照片文件到字節數組

        {

            string str = photopath;

            FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read);

            Byte[] byteData = new Byte[file.Length];

            file.Read(byteData, 0, byteData.Length);

            file.Close();

            return byteData;

 }

SQL Server下圖片的插入與讀取時間:2010-04-25 21:57:08來源:網絡 作者:未知 點擊:385次

下午向數據庫SQL SERVER中遇到添加圖片類型數據的問題,本以為在界面管理器中可以直接(通過指定路徑把圖片的數據保存起來)添加圖片卻不然。網上搜了下找到了相關的較專業的資料,整合解讀一下:

下午向數據庫SQL SERVER中遇到添加圖片類型數據的問題,本以為在界面管理器中可以直接(通過指定路徑把圖片的數據保存起來)添加圖片卻不然。網上搜了下找到了相關的較專業的資料,整合解讀一下:

 

兩種方法:

 

      第一就是在數據庫中存儲圖片的路徑,然后在程序中根據讀取的路徑讀取圖片;這種方法簡單、容易使用,但是在圖片過多時不好管理。

      第二種就是將圖片轉換成二進制存儲於數據庫中,sql server 2005有個image數據類型,專門用於存儲圖片,Image數據類型存儲的是長度不確定的二進制數據,最大長度是2GB。

 

第二種方法(詳情請參閱:詳述的過程)

 

簡述過程:

 

當然首先得有存儲圖片字段的數據庫、表。

 

如何插入圖片:

 

大致流程:其他圖片格式--》image類型的轉化--》到MemoryStream流的轉換--》到二進制的轉換--》插入到數據庫。

 

如何得到圖片:

 

大致流程:選取數據庫中的image類型字段--》轉化為二進制流--》轉化為MemoryStream流--》轉化為Image圖片格式類型。

 

其它:如何插入讀取一個文件、如何保存數據庫中的image字段到一個文件。。

 

 

本篇文章來源於:開發學院 http://edu.codepub.com   原文鏈接:http://edu.codepub.com/2010/0425/22271.php


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM