2010-06-28 62 views
2

我有,我有,以顯示存儲在我的本地磁盤C中的圖像的ASP頁: 即 C:\ Program Files文件\腎上腺素\腎上腺素\ UPLOADEDFILES \ TemplateFile \ abc.jpg的如何顯示存儲在本地驅動器中的圖像?

如何我可以這樣做嗎......我無法這樣做。 圖像不會顯示,而是顯示一個空的圖像保持器,其中指定的圖像的名稱和URL不可用。

請幫助....

+1

向我們展示一些代碼。如果您沒有發佈您的代碼以及您遇到什麼錯誤和問題,很難猜測您遇到的問題。 – Oded 2010-06-28 07:41:27

+0

實際上我有一個數據庫,其中上面提到的路徑是爲不同的員工存儲的......當我點擊employeee的名稱時,它應該檢索與該員工相對應的圖像的路徑並顯示其image.Now我能夠從數據庫中檢索路徑,但它不顯示存儲在C:驅動器中的映像。 可能發生了什麼問題? – jasmeet 2010-06-28 07:50:13

回答

12

你將有權限問題如果圖像是網站文件夾之外。傳統上,網站在NETWORK SERVICE用戶帳戶下運行,這將限制對文件夾外文件的訪問。您需要從具有相似訪問權限的文件夾中提取文件,並且特別不適合這樣做,特別是來自Program Files。

您應該可能通過網頁或網絡服務代理文件,這不會暴露圖像在網站外部提供的事實。您需要確保目標文件夾C:\ Program Files \ Adrenalin \ Adrenalin \ UploadedFiles \ TemplateFile具有網絡服務讀取權限。

例如。通過訪問URL

http://<localhost>/<website>/ImageServer.aspx 

你應該得到的圖像

class ImageServer 
{ 
    void Page_Load(object sender, EVentArgs e) 
    { 
    Response.ContentType="image/jpeg"; // for JPEG file 
    string [email protected]"C:\Program Files\Adrenalin\Adrenalin\UploadedFiles\TemplateFile\abc.jpg"; 
    Response.WriteFile(physicalFileName); 
    } 
} 
在瀏覽器

和測試:創建一個空白的ASP.NET頁面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImageServer.aspx.cs" Inherits="ImageServer" %> 

與後面的代碼。

然後,標籤內,使用頁面的URL作爲您的圖像佔位符:

<img src="ImageServer.aspx" alt="Image served" /> 

UPDATE:

看你的最新意見,我建議你發送一個查詢參數與某種的員工代碼,並使用它來查詢數據庫並在Page_Load()方法中獲取適當的文件名。不要發送文件名作爲QueryString的一部分。

+0

thanxx ...它的工作原理 – jasmeet 2010-06-28 08:13:10

+0

這很好。但我不明白爲什麼網頁代理可以訪問圖像,但其他人不能。我覺得我錯過了一些東西 - 你知道我可以在哪裏閱讀更多關於這方面的內容嗎? – grinch 2012-11-28 16:43:55

2

你想要做的事情可以工作,但它在Web開發中非常灰心。把權限問題放在一邊(這是非常嚴重的),你永遠不能認爲你的圖像將在驅動器C:上提供的絕對路徑中可用。

你應該做的是在你的網站目錄中創建一個文件夾,並用它來存儲圖像,並使用相對鏈接而不是絕對鏈接。

即使您設法使絕對鏈接現在可以正常工作,在將來以不同的配置運行應用程序時,您也可以爲將來的服務器頭痛準備好。

1

複製項目根文件夾中的圖像,並提供圖像源作爲圖像名稱而不是完整路徑。 例如,img src =「battlefield.jpg」

+0

爲我工作:imgage.ImageUrl =「battlefield.jpg」; – 2015-03-11 15:59:13

相關問題