老規矩,直接分析代碼
首先是,建立一個表,欄位類型是image
通常情況下,你會發現沒有辦法存image ,因為長度是50,不能改。而一個image通常是1000多個
image資料類型的長度是16,我存入一張圖的時候圖最多就只能30K左右,大點的圖根本就不能存。我想改它的長度,但是不能改的。
跑一下下面的語句:
sp_tableoption N'MyTable', 'text in row', '1000' 只有執行過這一句Image類型的資料才起作用
其次,是將檔案轉化為位元據位元組數組
將檔案轉為位元據
public static byte[] PictureFileToByte(string picFilePath)
{
FileStream fs = new FileStream(picFilePath, FileMode.Open, FileAccess.Read);
byte[] bytePhoto = new byte[fs.Length];
fs.Read(bytePhoto, 0, (int)fs.Length);
fs.Close();
return bytePhoto;
}
於是圖片便存到資料庫中去了。
讀取
建立一個Image 控制項, Image.ImageUrl=Image.aspx?ID=2002
2002是資料庫中存圖片的表的行ID,
Image.aspx 中
protected void Page_Load(object sender, EventArgs e)
{
string guid = Request.QueryString["ID"];
if (guid != null)
{
Response.ClearContent();
Response.ContentType = "image/jpeg";
byte[] data = Utility.Picture(guid); 讀出位元據位元組
Response.BinaryWrite((byte[])data);
}
}