C# 提供存储在服务器上而不是应用程序文件中的映像的路径

C# 提供存储在服务器上而不是应用程序文件中的映像的路径,c#,asp.net-mvc-2,C#,Asp.net Mvc 2,我需要在ASP.NET MVC页面上显示存储在服务器上的图像 我有一个apphelper类,可以用来提供路径 像这样 public static class AppHelper { public static string ImageLowResPath(string imageName) { } } <img src="/Controller/GetPicture?Filename=test.jpg" /> 如何获取存储在服务器c:驱动器上的文

我需要在ASP.NET MVC页面上显示存储在服务器上的图像 我有一个apphelper类,可以用来提供路径

像这样

public static class AppHelper
{
     public static string ImageLowResPath(string imageName)
     {

      }
}
<img src="/Controller/GetPicture?Filename=test.jpg" />
如何获取存储在服务器c:驱动器上的文件路径

在我看来,我会得到这样的文件路径

<img src="/Controller/GetPicture?Filename=test.jpg" />
img src=''


谢谢

您需要使用Server.MapPath(…),它将虚拟路径映射到磁盘上的物理位置:

string path = "~/Images/10-1010.jpg";
string filePath = Server.MapPath(path);

呃,我不知道你到底想要什么,但是你可以试着模仿然后访问服务器共享

[DllImport("advapi32.dll",EntryPoint = "LogonUser", SetLastError = true)]
public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword,
        int dwLogonType, int dwLogonProvider, ref IntPtr phToken);

IntPtr admin_token = IntPtr.Zero;
WindowsIdentity wid = WindowsIdentity.GetCurrent();
WindowsIdentity wid_admin;  
WindowsImpersonationContext wic;

LogonUser(user, servername, pass, 9, 0, ref admin_token)
wid_admin = new WindowsIdentity(admin_token);
wic = wid_admin.Impersonate();
一旦你扮演了一个拥有适当特权的人,你就可以去


\\servername\c$\(映像路径)

如果文件在wwwroot之外,则必须创建一个返回FileStreamResult的操作

例如

您的html现在应该如下所示

<img src="/Controller/GetPicture?Filename=test.jpg" />

更新 只要您的图像是静态内容,不会频繁更改,并且不需要实施某种访问控制,这确实不是最佳解决方案

根据最佳实践,您应该在多个域中拆分组件。雅虎发布了一份关于加速网站的最佳实践的优秀指南

图像不会与一起保存在应用程序中。仅在服务器文件系统上,因为它们将添加到应用程序之外。这还能找到他们吗?它们不在www根目录中不,这将找不到图像,除非它们映射到另一个虚拟目录。好的,我不这么认为,有没有办法将它们从服务器文件系统中删除?哦,我的糟糕,你在寻找文件路径,而不是访问文件。哦,我的朋友,谢谢!!工作得很好。我开始做类似的事情,但试图将其作为字节[]返回,我不知道FileStreamResult。这让生活变得容易多了。非常感谢。现在我想知道我所做的是否符合最佳实践。我不想保存应用程序中的所有图像,因为包含图像的文件夹用于我的其他一些应用程序的读写。有没有更好的方法来获取和上传这些图片,比如使用虚拟目录(尽管我真的不知道怎么做)或者其他什么?@marc.d你介意参考你的答案看看我的问题吗?