2011-08-11 81 views
1

顯示在asp.net 3.5 C#動態創建的圖像I必須動態地顯示圖像。我寫的代碼,我得到了圖像&路徑的名稱也從數據庫即我先前存儲的文件名&文件路徑,但我沒有得到的圖像(不顯示圖像,即使我存儲的圖像的路徑)。請給我一些關於如何在本地主機上設置imageurl的想法。我的代碼如下:如何在本地主機

//PlaceHolder for adding images i.e inside formview control 
PlaceHolder PHFilename = (PlaceHolder)FVViewCustData.FindControl("PHFilename"); 
for (int i = 0; i < dsfile.Tables[0].Rows.Count; i++) 
{ 
    HyperLink hypname = new HyperLink(); 
    hypname.Text = Convert.ToString(dsfile.Tables[0].Rows[i]["FileName"]); 
    PHFilename.Controls.Add(hypname); 

    Image img = new Image(); 
    //IPAddress is my ipaddress 
    img.ImageUrl = "IPAddress" + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

    PHFilename.Controls.Add(img); 
} 
+0

那你存儲在數據庫中(在列「文件路徑」)?絕對路徑還是相對路徑或文件名?你能展示一個例子記錄嗎? – M4N

+0

有可能是你貼在這裏執行你的代碼的倒數第二行之後被分配到img.ImageUrl價值? – Waqas

回答

1

如果保持圖像數據DB,您可以使用圖像處理程序和動態加載。

但是,如果你保持圖像的URL中DB取決於你怎麼保存文件名或相對路徑或絕對路徑。

C# Save and Load Image from Database

0

有幾種方法來解決你的問題:

第一種方式:一些基本的目錄下 存儲所有的圖像 - 你可以在它之下的子目錄。您在數據庫中存儲的映像路徑將與此基本目錄相關。現在將這個基本目錄映射爲您網站中的某個虛擬目錄。現在您可以使用代碼,如

string imageVirtualDir = "/StoredImages/"; 
img.ImageUrl = imageVirtualDir + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

不用說,基本目錄路徑和映像虛擬目錄路徑將是可配置的值。

第二種方式: 只要你願意,你可以存儲圖像。假設您從數據庫中獲得完整的物理路徑。所以,你會設置圖像的URL,如

img.ImageUrl = "/ImageServer.ashx?path=" + Convert.ToString(
        dsfile.Tables[0].Rows[i]["FilePath"]); 

在這裏,你將需要一個簡單的HTTP處理程序(ImageServer.ashx)提供給您的圖像 - 該代碼會像

public class ImageServer : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     var path = context.Request["path"]; 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.TransmitFile(path); 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 

注意這只是一個讓你開始的模板代碼。對於產品代碼,您需要進行錯誤處理,根據圖像類型設置正確的內容類型。此外,它不是最好有查詢字符串中的物理圖像路徑 - 所以你需要通過其中的相對路徑或一些象徵性的,而不是 - 例如,你可以通過行ID,以便處理程序可以查詢數據庫並獲取圖像路徑等等。