2013-09-01 83 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