2013-07-30 88 views
0

我正在動態創建圖像,並從sql server分配路徑,但服務器上的圖像未顯示。儘管路徑正確,圖像仍未顯示

的pic_list包含如下所有圖片的路徑:

~/Member_Data/039658893/images/one.jpg 

我的代碼:

for (int j=0; j<pic_num; j++) 
      { 

       TableCell c1 = new TableCell(); 


        ImageButton img = new ImageButton(); 
        img.ID = temp.ToString(); 
        img.ImageUrl = Server.MapPath(pic_list[temp]); 
        img.CssClass = "img_bg" ; 
        img.Click += new ImageClickEventHandler(delete_pic); 

        c1.Controls.Add(img); 


       r1.Controls.Add(c1); 

圖像不beig顯示,當我在Chrome中檢查他們,我得到這個路徑:

enter image description here

,當我點擊我得到這個頁面的超級鏈接:我檢查

enter image description here

和圖像文件存在於服務器上。

我該如何寫路徑?

回答

1

C:\inetpub\wwwRoot\...\efi5.jpeg路徑是完整的文件系統路徑,而不是應該在Web服務器上使用的路徑。這些路徑在技術上是正確的,但不在所需的上下文中(Web服務器)。您需要從您的所有鏈接中刪除網絡服務器根目錄的路徑,即C:\inetpub\wwwRoot\,並保留igroup20\test2\Member_data\039658893\images\efi5.jpg。然後你將有一個相對於Web服務器根目錄的路徑。

請記住,它們相對於Web服務器根目錄,並且您需要從哪個目錄調用它們。所以我建議你建立的絕對鏈接,如:

<a href="http://www.domain.com/igroup20/test2/Member_data/039658893/images/efi5.jpg"> 

,而不是僅僅

<a href="igroup20/test2/Member_data/039658893/images/efi5.jpg"> 
+0

我該怎麼做?我在sql服務器的路徑是這種格式:〜/ Member_data/039658893/images/efi5.jpg它給了我一個href:「http://proj.ruppin.ac.il/igroup20/test2/~/Member_data /039658893/images/efi5.jpg – Dvirski

+0

首先,您不需要Server.MapPath函數,只需使用您的路徑。如果所有圖像都位於'igroup20 \ test2 \'目錄並且從那裏調用這些文件,那麼您只需要從路徑中刪除前導'〜/',這樣你就可以得到'Member_data/039658893/images/efi5.jpg',當你用這個路徑創建一個HTML鏈接時,它應該打開http:// proj。 ruppin.ac.il/igroup20/test2/Member_data/039658893/images/efi5.jpg'這是可行的。 – pajaja

+0

我做到了,它可以工作,但是當我上傳新文件並嘗試顯示它時,它會引發我一個頁面顯示「 HTTP錯誤401.3 - 未授權 由於訪問控制列表(ACL)配置或加密,您無權查看此目錄或頁面Web服務器上此資源的設置。 – Dvirski

0

Server.MapPath給你的物理路徑的服務器上的文件。

您需要路徑來瀏覽器會看到它的圖像。像"/Member_Data/039658893/images/one.jpg"就是你在找的東西。

相關問題