2011-01-13 157 views
2

所以我有一些麻煩,從項目文件夾外顯示圖片...顯示圖片

我似乎只能以「〜」目錄中訪問圖像和子目錄...

說,如果我想從「E:/ XYZ/11-01-01新年/」或類似的東西訪問圖像,我該怎麼做?

注:我設置的所有文件夾和子文件夾爲可讀權限爲「所有人」,所以IIS/Visual Studio中應該可以,但沒有顯示

+1

你試過了哪些代碼?你得到了哪些錯誤/異常? – 2011-01-13 20:06:20

+1

最簡單的方法是在IIS中設置一個虛擬目錄,但通常這意味着URL可以在沒有任何驗證檢查的情況下公開訪問。如果您想要根據登錄狀態/角色控制對文件的訪問,或者想要執行自定義日誌記錄,那麼您需要使用IHTTPHandler路徑。 – 2011-01-13 22:48:19

+0

@pauli:沒有錯誤,因爲圖像控件不會拋出錯誤...他們只是保持空白。 – 2011-01-15 06:56:35

回答

5

您應該使用在圖像控制圖像HttpHandler來顯示圖像。

谷歌搜索「httphandler圖像」找到了很多關於如何做到這一點的例子。

而不是試圖直接鏈接到你的圖像,你會鏈接到與查詢字符串決定哪個圖像顯示的處理程序。例如

http://mysite.com/MyHandler.ashx?image=myimage.jpg 

這裏是一個非常基本的樣品(減去錯誤處理等)

using System.IO; 
using System.Web; 
public class MyImageHandler : IHttpHandler 
{ 
    public void ProcessRequest(System.Web.HttpContext ctx) 
    { 

     string _Path; 

     _Path = "E:\\XYZ\\11-01-01 New Year\\" + context.Request.QueryString["image"]; 

     ctx.Response.StatusCode = 200; 
     ctx.Response.ContentType = "image/jpeg"; 
     ctx.Response.WriteFile(_Path);  
    } 

    public bool IsReusable { get {return true; } }   
} 
2

客戶端瀏覽器將永遠不知道這些圖片是,除非你映射一個虛擬目錄的圖像。在您的本地測試環境中,您可以通過將該映像稱爲「file:///E:/XYZ/11-01-01 New Year/myimage.jpg」來解決此問題,但這是非常糟糕的做法,並且在生產環境中將無法工作。您應該始終在應用程序的工作目錄中使用相對路徑,或者在其他位置使用靜態定義的虛擬目錄。