我在另一个目录中有一些html文件,包含一些javascripts,images和css。我想在我的网站中使用该文件,并限制用户访问该index.html链接。我在我的控制器操作中使用了返回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;
}
答案 0 :(得分:0)
确保在调试过程中将以下值返回到图像扩展名:
.jpg/.jpeg => mime type: image/jpeg,
.png => mime type:image/png
您可以使用xml文件,其中每个文件扩展名都映射到其mime类型。这将确保您的系统可以处理所有可能的扩展。 This链接有一个建议的xml文件
答案 1 :(得分:0)
最好只查询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"];