2014-12-28 46 views
0

我正在建立一個使用asp.net c#的社交網站,並且我在檢索圖像時遇到問題,當我將圖像上傳到數據庫時,它的名稱將被更改並保存在我提到的真實路徑上。並且我想說它保存在數據庫中作爲其名稱,但我無法將其鏈接到網絡表單。如何檢索數據庫中的圖像到webform

HTML代碼

<asp:Image ID="Pro_pic" runat="server" Height="233px" ImageUrl="~/Profile/Image/Default.png" style="margin-left: 8px; margin-top: 13px" Width="187px" /> 

這是隱藏文件的代碼

protected void Page_Load(object sender, EventArgs e) 
{ 






     string db = ""; 
     db = ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString; 
     SqlConnection con = new SqlConnection(db); 
     con.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "SELECT * FROM [UserData] WHERE Email = '" + Session["Email"].ToString() + "'"; 
     cmd.Connection = con; 
     SqlDataReader dr; 
     dr = cmd.ExecuteReader(); 

     while (dr.Read()) 
     { 

      Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"]; 

     } 

     con.Close(); 







} 

這是SQL代碼

CREATE TABLE [dbo].[UserData] (
[YourName] VARCHAR (50) NULL, 
[Email]  VARCHAR (50) NOT NULL, 
[Password] VARCHAR (50) NULL, 
[Gender]  VARCHAR (50) NULL, 
[Birthday] VARCHAR (50) NULL, 
[AboutMe]  VARCHAR (50) NULL, 
[Country]  VARCHAR (50) NULL, 
[ID]   NVARCHAR (50) NOT NULL, 
[ProfilePic ] NVARCHAR (500)  NULL, 
CONSTRAINT [PK_UserData] PRIMARY KEY CLUSTERED ([Email] ASC) 

);

Someboday可以告訴我如何得到這個圖像的URL嗎?

我覺得這個

Pro_pic.ImageUrl = @"C:\Users\Supun\Documents\Visual Studio 2013\WebSites\MeetYou\ProfilePic\"+dr["ProfilePic"]; 
+0

它看起來像'ProfilePic'是個人資料照片的名稱,並且您將所有個人資料照片放在同一個文件夾中?那麼問題是什麼?你有例外嗎?或者會發生什麼? – msporek

+0

是的所有照片在相同的文件夾,但那些有不同的名字,照片不加載 –

回答

0

錯誤你應該把文件夾的圖片作爲應用程序的一個子文件夾。將它直接放在應用程序之外的位置會導致此類訪問問題。如果您將該文件夾(我們將其命名爲「Images」)放在您的應用程序位置,那麼您可以將ImageUrl屬性指定爲「〜/ Images /」+文件名。

+0

好吧謝謝,現在它會起作用。 –

0

在Web環境中處理圖像時,您應該遵循特定的指導原則,尤其是ASP.NET和MVC。

  1. 儘量不要使用byte []流存儲圖像,然後使用慢速和未優化的查詢從數據庫重建它。

  2. 標準方法是在放置圖像的根目錄中創建一個/ Images文件夾。

  3. 寫類庫:

    公共類QueryClass { 串img_url; SqlConnection con = new SqlConnection(「// CONNECTION_STRING」); SqlCommand cmd; SqlDataReader閱讀器;

    public string getImageUrl(){ 
        cmd=new SqlCommand("select * from UserData where WHERE Email = '" + Session["Email"].ToString() + "'",con); 
        reader=cmd.ExecuteReader(); 
        while(reader.read()){ 
         img_url=reader[8].ToString(); 
         break; 
        } 
        return img_url; 
    } 
    
  4. 存儲URL(或URI)到圖像,即,圖像路徑例如:/Images/tree.png並將其綁定到一個圖像的控制。

  5. 將Url字符串存儲爲數據庫實體並通過查詢檢索它。 例子:SELECT img FROM Users WHERE [email protected]

  6. 運行查詢和URL存儲在一個字符串說string img_url=QueryClass.getImageUrl();

  7. 最後使用Pro_pic.ImageUrl= "/Images/"+img_url;

相關問題