2013-09-01 130 views
0

後,我使用此代碼上傳到服務器的圖像:無法訪問圖片上傳

var fileName = Path.GetFileName(file.FileName); 
var path = Path.Combine(Server.MapPath("~/Content/Uploaded"), fileName); 
file.SaveAs(path); 

一切順利,我可以看到,當我與FileZilla的檢查圖像上傳。可是後來,當我嘗試訪問這樣的形象:

@{ var path = "/Content/Uploaded/" + item.ImageName; } 
<img src="@Url.Content(path)" width="200"/> 

我得到

401 - Unauthorized: Access is denied due to invalid credentials. You do not have permission to view this directory or page using the credentials that you supplied.

如何解決此得到什麼?如果我用FileZilla刪除文件並在它工作後手動添加相同的文件,我想它必須是「file.SaveAs(path)」對文件不起作用而不是文件夾放置一些權限。

+0

上傳時,您似乎正在使用相對於應用程序根目錄「〜/ Content ...」的路徑,但嘗試讀取時,您正在使用相對於當前目錄「/ Content ...」的路徑。假設你在MVC中的Views文件夾中,這將不會讓你到同一個目錄。在視圖中輸出「路徑」的值,並確保它到達所需的路徑。 Url.Content()也可以使用「〜/ ...」接受相對於根的路徑,所以請嘗試使用它。 –

+0

我也改變了,但似乎沒有任何問題的路徑。因爲當我檢查FileZilla時它保存到正確的文件夾中。當我刪除圖像並使用FileZilla手動將其添加到相同的文件夾中時,視圖中的鏈接將起作用。 – user1776562

回答

0

你要明白,是有區別的~/Content/Uploaded

之間/Content/Uploaded那是你的問題。

爲方便起見,我通常不喜歡使用~

請看一下頁面的源代碼。你對img標籤有什麼看法?

+0

正如我已經回答,我嘗試了兩種。它似乎沒有任何問題,因爲我在那裏手動工作的同一文件夾中的其他圖像的路徑沒有任何問題。它只是通過網站上傳的圖像,不工作(我檢查了他們是在正確的夾)。 – user1776562

+0

你有沒有試過通過一些控制器訪問它? – DarthVader

+0

我剛剛嘗試過,並被拒絕訪問。此錯誤:「ASP.NET無權訪問請求的資源,請考慮將資源的訪問權限授予ASP.NET請求標識,ASP.NET具有基本的進程標識(通常爲IIS 5上的{MACHINE} \ ASPNET或IIS 7上的網絡服務,以及IIS 7.5上配置的應用程序池標識),如果應用程序未模擬,則使用該標識,如果應用程序通過模擬,則標識將爲匿名用戶(通常爲IUSR_MACHINENAME)或經過身份驗證的請求用戶。「 – user1776562