2009-12-02 59 views
0

好吧,我想我已經接近在此做出突破了。使用存儲在sql數據庫中的文件路徑(幾乎在那裏)檢索圖像

我有下面的代碼應,從理論上說,使用通過SQL數據庫

public void Image1_Load(object sender, EventArgs e) 
{ 
    ////Code to retrieve logo image from tblMemberLogo - Currently does not work!!! 

    var connectionstring = ConfigurationManager.ConnectionStrings["PDCConnectionString"].ConnectionString; 
    using (var cn = new SqlConnection("Data Source=STRSQL04;Initial Catalog=PDC;Integrated Security=True")) 
    using (var cmd = cn.CreateCommand()) 
    { 
     cn.Open(); 
     cmd.CommandText = "SELECT LogoFilePath FROM tblMemberlogo WHERE MemberID = '123'"; 
     //cmd.Parameters.Add("123", "5"); 
     using (var reader = cmd.ExecuteReader()) 
     { 
      if (reader.Read()) 
      { 
       var filepath = reader.GetString(0); 
       Image1.ImageUrl = filepath; 
       Label2.Text = filepath; 
      } 
     } 
    } 
} 

文件路徑現在填充的圖像時,我知道我是親如Label2的帶回會員相應的文件路徑然而,Image1仍然擁有可怕的紅十字。 該Image控件的源代碼簡單如下。

Image ID="Image1" runat="server" Height="71px" 
      Width="400px" onload="Image1_Load" 

我會購買誰幫助我完成一個很好的大品脫,因爲我處於(另一個)崩潰的邊緣!

請在下面找到輸出html。

img id="Image1" src="file:c:\online%20reporting\SQL%20Solutions\Member%20Logo\123.GIF" style="height:71px;width:400px;border-width:0px;"

+0

標籤中的文字是什麼? – cjk 2009-12-02 15:14:10

+0

你見過這個鏈接嗎(張貼在另一個答案中):http://mitch-wheat.blogspot.com/2007/05/save-and-restore-filesimages-to-sql.html – 2009-12-02 15:17:38

+0

你好ck-我已經只需將Label2放入文件路徑即可顯示文件路徑。 – MrDean 2009-12-02 15:18:14

回答

0

我不知道你的數據是如何存儲,但在大多數情況下,你分配給需要確保其相對於網站圖片服務器端時。

執行此使用:

Image1.ImageUrl =使用Server.Mappath(文件路徑);

1

根據URL,你可能需要使用ResolveClientUrl或使用Server.Mappath

Image1.ImageUrl = ResolveClientUrl(filepath); 

OR

Image1.ImageUrl = Server.MapPath(filepath); 
+0

我試圖後者(Server.MapPath(filepath))並收到「HttpException was unhandled file:....'不是有效的虛擬路徑。 ResolveClientUrl方法不幸地給了我可怕的紅色十字架。 謝謝你的建議。 – MrDean 2009-12-02 15:38:39

3

不幸的是,你不能用一個 「文件:」 作爲URL的src一個圖像。你需要做的是把這個路徑變成一個有效的HTTP URL。

所以,如果你的圖片是在"c:\online reporting\SQL Solutions",您應該在站點根目錄指向那裏,也許稱之爲「/標識」什麼下添加在IIS虛擬目錄,那麼你可以去:

String fileName = Path.GetFileName(reader.GetString(0)); Image1.ImageUrl = "/logos/" + fileName;

如果您的web根目錄已經在運行,比如說「c:\ online reporting」,那就更簡單了 - 您可以跳過虛擬目錄,只需使用「/ SQL%20Solutions /」作爲URL的開頭。

+0

Grr,不知道爲什麼這個代碼示例不會進入兩行。 – rusty 2009-12-02 16:13:35

+0

我永遠無法讓代碼插入正常工作!我明白你在說什麼,並會放棄它......感謝生鏽。 – MrDean 2009-12-02 16:18:50

+0

你好生鏽...對不起...我是厚pigsh * T(也只是全新這個)你能給我一些指點至於如何我可以 「所以,如果你的圖片是在」 C:\網上申報\ SQL解決方案「您應在站點根目錄指向存在下添加在IIS虛擬目錄」 – MrDean 2009-12-02 16:30:24

相關問題