2011-03-30 87 views
2

我實際上有一個C#winform應用程序,它從我的計算機C://images/...加載帶Image對象和函數Fromfile的圖像。如何從C#中的Web應用程序中的服務器加載圖像#

Image.FromFile(Path); 

但在我的web應用程序(ASP)

<asp:Image ID="viewPhoto" runat="server" Width="550px" Height="400px"/> 

我使用屬性IMAGEURL。

viewPhoto.ImageURL = Path 

但問題是,它並沒有因爲這種方式找到正確的路徑。該路徑將是http://localhost:3656/C://images....

我想直接從我的服務器加載圖像有兩個我的應用程序的正確路徑。(網頁ASP和WinForm的)

Image.FromFile(/images/myimage.jpg) 

這實際上不起作用因爲該程序在此路徑中找不到任何照片。

回答

7

首先,我認爲您試圖顯示的圖像不在Web應用程序文件夾/虛擬目錄中。移動圖像文件夾到你的web應用程序文件夾,然後使用:

Page.ResolveClientUrl("images/test.jpg"); 

或服務器端:

Server.MapPath("images/test.jpg"); 

如果你不想要的圖像移動到您的Web文件夾,然後你唯一的選擇就是寫的HttpHandler它將從C:\ images文件夾中讀取圖像並將其發送給客戶端。這還需要您的Web應用程序IIS用戶訪問Web應用程序範圍外的某個文件夾的某些特定權限。

你可以看到的HttpHandler這裏的樣本:Thumbnailer HTTP Handler

+0

這就是我想說的。 – 2011-03-30 15:39:03

+0

它的工作原理!但它仍然給我的路徑(「C://文件夾/ .....」)。 如何檢索我的URL的結尾(/images/test.jpg)? – kschaeffler 2011-03-30 16:03:53

+0

@Karl Schaeffler:看看Page.ResolveClientUrl – HABJAN 2011-03-30 16:10:02

-1

使用您現在使用的路徑(http:// localhost:3656/C://圖像....),應用程序將在您的應用程序中查找/ C:// images ...文件夾Web服務器上的目錄。我相信你應該在應用程序文件夾中創建一個圖像目錄,並從那裏服務器中的圖像,以便你可以使用相對路徑來引用圖像。

+0

它不顯示任何圖像。它爲winform應用程序找到一個圖像,但不是用於ASP。 – kschaeffler 2011-03-30 15:34:14

+0

我更新了我的答案。您需要在您的Web應用程序中創建一個圖像目錄並將圖像存儲在那裏,或者編寫一些代碼,通過HTTP URL從C:\ images文件夾中流式傳輸圖像。 – 2011-03-30 15:35:48

+0

我做到了。我在我的服務器中有一個文件夾/圖像。所以,當我把URL viewPhoto.ImageURL = /images/myphoto.jpg它的工作,但不是我的Winform應用程序。 Image.FromFile函數在/images/myphoto.jpg中找不到任何圖片 – kschaeffler 2011-03-30 15:37:34

0

ASP.Net圖像簡單地呈現IMAGEURL到客戶端瀏覽器,這將嘗試從指定的位置加載圖像,這通常需要一個資源可通過您的網站獲得。

嘗試移動Web根裏面的圖片,那麼你可以訪問他們喜歡的:

viewPhoto.ImageUrl = "~/images/yourimage.jpg"; 
0

正如我敢肯定你知道你的<asp:Image>元素實際上是創建HTML <img>元素,將指示瀏覽器請求圖像從瀏覽器。

Image.FromFile會給你一個服務器端的圖像對象,但它不會用於你的客戶端瀏覽器。

正如@HABJAN所說,您需要將本地文件的路徑映射到相對的Web URI,並且您可以使用Server.MapPath。然而,你的圖像需要放在你的asp.net項目文件夾中,這個文件夾可以被Web服務器訪問,以便它能夠提供文件。

如果你真的想在某種共享常量程序集中共享路徑,我建議你讓Windows應用程序工作在相對路徑上,併爲windows應用程序和web應用程序複製圖像文件夾結構。

相關問題