[英]How to open html file from another directory in mvc
我在另一个目录中有一些html文件,其中包含一些javascript,图像和CSS。 我想在我的网站中使用这些文件,并限制用户访问该index.html链接。 我在控制器操作中使用了return File方法,但无法在该目录上打开图像,因此无法正常工作。 正确的解决方案是什么?您有想法吗?
PS。 (当我调试代码时,我看到js,css和html文件可以使用正确的mime类型(jpg或png文件除外)打开)
public ActionResult User(string name)
{
string file = (Server.MapPath(Url.Content("~/Content/Users/" + name)));
string path = Path.Combine(file);
string mime = GetMimeType(path);
return File(path, mime);
}
public string GetMimeType(string fileName)
{
string mimeType = "application/unknown";
string ext = Path.GetExtension(fileName).ToLower();
Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);
if (regKey != null && regKey.GetValue("Content Type") != null)
{
mimeType = regKey.GetValue("Content Type").ToString();
}
return mimeType;
}
确保在调试过程中将以下值返回到映像扩展名:
.jpg/.jpeg => mime type: image/jpeg,
.png => mime type:image/png
您可以使用xml文件,其中每个文件扩展名都映射到其mime类型。 这将确保您的系统可以处理所有可能的扩展。 此链接具有建议的xml文件
最好仅查询IIS以获取静态内容mime类型。 这样,您就可以在一个位置管理它们。
using Microsoft.Web.Administration;
//--- stuff goes on ---//
ServerManager serverManager = new ServerManager();
var config = serverManager.GetApplicationHostConfiguration();
var staticContent = config.GetSection("system.webServer/staticContent");
var mimeMap = staticContent.GetCollection();
var mType =mimeMap.FirstOrDefault(a => (string) a.Attributes["fileExtension"].Value == ".pdf");
return (mType == null) ? "text/plain" : mType["mimeType"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.