注意:我要存儲文件二進制流的列的類型是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