2010-09-16 70 views
1

如何在用戶使用ASP.NET中的C#將圖像文件上載到SQL Server 2005時動態插入圖像?這是爲了讓用戶在我的網絡應用中上傳他們的個人資料照片。與使用C#的Windows應用程序完成它有什麼不同?將用戶配置文件映像保存到數據庫中

+1

你確定要插入數據庫而不是將其上傳到目錄嗎? – 2010-09-16 13:08:04

回答

1

與在WinForms中一樣。獲取byte[]image列。但我強烈建議使用文件系統來存儲圖片。 DB用於關係數據,文件系統用於原始字節。

http://msdn.microsoft.com/en-us/library/aa479405.aspx

+1

是的,我同意安德烈,如果你正在做的是試圖存儲用戶個人資料圖片,上傳他們的目錄並存儲他們的來源。想象一下從數據庫查詢大量的用戶個人資料圖片......你會有巨大的表現點擊! – 2010-09-16 13:37:56

0

下面是在C#中將圖像插入數據庫的代碼示例。你會粗糙的需要支持表的圖片應該是一個字節字段,並保持圖片類型,以便您可以稍後檢索圖像來顯示它。除此之外,您需要將文件輸入框與提交按鈕一起放在頁面上。

public void AddImage(object sender, EventArgs e) 
{ 

    int intImageSize; 

    String strImageType; 
    Stream ImageStream; 
    FileStream fs = File.OpenRead(Request.PhysicalApplicationPath + "/Images/default_image.png"); 
    Byte[] ImageContent; 

    if (PersonImage.PostedFile.ContentLength > 0) 
    { 
     intImageSize = PersonImage.PostedFile.ContentLength; 
     strImageType = PersonImage.PostedFile.ContentType; 
     ImageStream = PersonImage.PostedFile.InputStream; 

     ImageContent = new Byte[intImageSize]; 
     int intStatus; 
     intStatus = ImageStream.Read(ImageContent, 0, intImageSize); 
    } 
    else 
    { 
     strImageType = "image/x-png"; 
     ImageContent = new Byte[fs.Length]; 
     fs.Read(ImageContent, 0, ImageContent.Length); 
    } 

    SqlConnection objConn = new SqlConnection(ConfigurationManager.AppSettings["conn"]); 
    SqlCommand objCmd; 
    string strCmd; 

    strCmd = "INSERT INTO ImageTest (Picture, PictureType) VALUES (@Picture, @PictureType)"; 

    objCmd = new SqlCommand(strCmd, objConn); 

    SqlParameter prmPersonImage = new SqlParameter("@Picture", SqlDbType.Image); 

    prmPersonImage.Value = ImageContent; 

    objCmd.Parameters.Add(prmPersonImage); 
    objCmd.Parameters.AddWithValue("@PictureType", strImageType); 

    lblMessage.Visible = true; 

    try 
    { 
     objConn.Open(); 
     objCmd.ExecuteNonQuery(); 
     objConn.Close(); 
     lblMessage.Text = "ImageAdded!"; 
    } 
    catch 
    { 
     lblMessage.Text = "Error occured the image has not been added to the database!"; 
    } 

}