2010-03-17 74 views
0

我有一個文件夾C:\ Images,它具有一些圖像。該文件夾不在我的項目中,我想知道是否有方法將該文件夾中的圖像加載到ASP.NET Image控件。從本地驅動器加載圖像控件

<asp:Image ID="img" runat="server" /> 

一種解決方案可以使圖像文件夾的IIS虛擬目錄,但我想知道這是否可以在不創建圖像文件夾虛擬目錄來完成。

回答

2

假設適當的訪問權限授予Images文件夾,你可以做這樣的事情:

您的主頁:

protected void Page_Load(object sender, EventArgs e) 
{ 
    mainImage.ImageUrl = "ImageHandler.ashx?image=MyImage.jpg"; 
} 

ImageHandler:

public void ProcessRequest(HttpContext context) 
{ 
    byte[] imageBytes = File.ReadAllBytes(@"C:\Images" + context.Request["image"]); 
    context.Response.ContentType = "image/jpeg"; 
    context.Response.BinaryWrite(imageBytes); 
} 
+0

很好的描述,但你忘了除非他有一個非常好的理由,否則他絕不應該這樣做,他解釋說,與從網絡服務器提供文件相比,它效率低下多少。如果他只限制某些用戶的圖像,那麼是的,這是一種方法。幾乎任何其他原因,這是一個可怕的想法,雖然如你所描述的那樣,這在技術上是可行的。 – 2010-03-18 21:29:55

+0

我真的想過,但我只是回答他的問題,這是可能的。我同意你的所有觀點,我不確定他爲什麼不能將這個圖像添加到他的網站項目中。感謝您的評論。 – 2010-03-19 03:34:35

1

在一天結束時,圖像需要放在用戶瀏覽器可以看到的地方。

這意味着你的選擇是:

  • 圖像移動到一個目錄在Web服務器上
  • 設置圖像的目錄爲虛擬目錄
  • 複製在運行時,圖像上的某個目錄網絡服務器

最佳實踐的答案是將圖像放入您的項目,如果他們是網站的一部分,或者映射虛擬目錄如果目錄是用戶上傳的存儲圖像。