2012-11-28 2 views
2

J'ai des fichiers html dans un autre répertoire avec quelques javascripts, images et css. Je veux utiliser ces fichiers sur mon site et empêcher les utilisateurs d'accéder à ce lien index.html. J'ai utilisé la méthode de retour de fichier dans mon action de contrôleur, mais il n'a pas pu ouvrir les images sur ce répertoire, donc cela n'a pas fonctionné. Quelle est la bonne solution Avez-vous une idée?Comment ouvrir le fichier html à partir d'un autre répertoire dans mvc

ps. (Quand je le code débogués, je l'ai vu que js, css et des fichiers html peuvent ouvrir des types MIME appropriés à l'exception des fichiers JPG ou 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; 
} 

Répondre

0

Assurez-vous que pendant le processus de débogage les valeurs suivantes sont renvoyées aux extensions d'image :

.jpg/.jpeg => mime type: image/jpeg, 
.png => mime type:image/png 

Vous pouvez utiliser un fichier xml où chaque extension de fichier est mis en correspondance avec son type MIME. Cela garantira que votre système peut gérer toutes les extensions possibles. This lien a un fichier xml suggéré

0

Mieux vaut juste qyery l'IIS pour les types MIME de contenu statique. De cette façon, vous avez un seul endroit où les administrer.

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"]; 
Questions connexes