第一次寫文章,而且還是個新手,請各位多多見諒。
程式效率不一定高,但是能保證是對的。
隻是寫出來供那些和我一樣也是新手,并且還在找尋方法的兄弟們。
請各位前輩們多多指點,謝謝啦。
存儲圖檔
1.
AddImage.aspx
添加個<input type="file">标簽 和<img>标簽
<input type="file" runat="server" id="file" οnchange="javascript:document.all('img').src=this.value"/>
<img id="img" alt="圖檔"/>
作用:通過input标簽選擇本地的圖檔後,圖檔可以在img标簽上預覽
2.
AddImage.cs
private int imageSize;//存儲本地圖檔的長度
private string imageType;//存儲本地圖檔的類型
private Stream imageStream;//存儲本地圖檔的流
imageSize = file.PostedFile.ContentLength;
imageType = file.PostedFile.ContentType;
imageStream= file.PostedFile.InputStream;
byte[] ImageContent;//建立一個byte數組用于存儲圖檔的内容
ImageContent = new byte[imageSize];//數組長度為圖檔的長度
int intStatus = imageStream.Read(ImageContent, 0, imageSize);
// 寫入資料庫,我用的是存儲過程
SqlParameter[] parameters = {
new SqlParameter("@Img", SqlDbType.Image),
new SqlParameter("@ImgType", SqlDbType.NVarChar,50)};
parameters[0].Value = ImageContent;
parameters[1].Value = imageType;
string strSql = "PRO_InsertImg";
//存儲過程為:
//@Img Image,
//@ImgType nvarchar(50)
//As
//Begin
//Insert into dbo.ImgInfor
//Values
//(@Img, @ImgType)
//End
SqlConnection con = new SqlConnection(conStr);//conStr是連接配接資料庫字元串
con.Open();
SqlCommand cmd = new SqlCommand(strSql, con);
cmd.CommandType = CommandType.StoredProcedure;
if (parameters != null)
{
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
}
try
{
cmd.ExecuteNonQuery();
con.Close();
}
catch (Exception SQLExe)
{
Response.Write("添加失敗!原因:" + SQLExe.ToString());
}
--------------------------------------------------------------------------------------------------------------------------------------------
顯示圖檔
1.
建立一個ShowImage.aspx
添加Image控件用于顯示資料
<asp:Image id="Img" Width="100px" Height="100px" runat="server" ></asp:Image>
不過因為Image控件不能顯示二進制的圖檔,是以再建立一個Img.aspx用于顯示圖檔。
再将此Image控件的ImageUrl指向Img.aspx
這樣就可以在Image控件上顯示資料庫中的圖檔了
2.
ShowImage.cs
Img.ImageUrl = "Img.aspx";//把Image控件的Url指向Img.aspx頁面
3.
Image.cs
string strSql;
strSql = "select top 1 Img,ImgType from ImgInfor";
// 讀取資料庫的資料
SqlConnection con = new SqlConnection(conStr);//conStr是連接配接資料庫字元串
SqlDataAdapter adapter = new SqlDataAdapter(strSql , con);
DataSet ds=new DataSet();
adapter.Fill(ds,"ImgInfor");
DataTable table = ds.Tables["ImgInfor"];
Response.ContentType = table.Rows[0].ItemArray[0].ToString().Trim();
Response.BinaryWrite((byte[])table.Rows[0].ItemArray[1]);
以上
上面寫的代碼都沒有在函數中,大家要使用的話,可以截取相應的部分添加到自己的函數或是事件中即可