2010-01-11 7 views
16

Dans mon application MVC, j'ai les chemins suivants;Récupérer des fichiers dans un dossier

  • /content/images/full
  • /content/images/pouces

Comment puis-je, dans mon C# contrôleur, obtenir une liste de tous les fichiers dans mon dossier pouces?

Modifier

est Server.MapPath encore la meilleure façon?

Je l'ai maintenant DirectoryInfo di = new DirectoryInfo(Server.MapPath("/content/images/thumbs")); mais je pense que ce n'est pas la bonne façon.

Y at-il une meilleure pratique dans MVC pour cela ou est-ce que ce qui précède est toujours correct?

+1

ci-dessus ('Server.MapPath') est correct et acceptable à mon avis. –

Répondre

5
Directory.GetFiles("/content/images/thumbs") 

Cela va obtenir tous les fichiers dans un répertoire dans un tableau de chaînes.

+2

@Daniel je ne peux pas obtenir ce travail. il mappe à c: \ content \ images \ thumbs plutôt qu'à mon niveau d'application Web. – griegs

+0

Pouvez-vous fournir plus d'informations sur ce que vous essayez de faire? Il semble que vous essayez de renvoyer une liste de chemins de fichier à la vue. Dans ce cas, dans la vue, essayez d'utiliser '<% = Server.MapPath (filePath)%>', où filePath est un chemin local. –

+0

Oups, viens de remarquer que 'Server.MapPath()' convertit réellement un chemin de serveur vers un chemin de fichier. Vous cherchez d'autres solutions maintenant ... –

38

.NET 4.0 a obtenu une méthode plus efficace pour cela:

Directory.EnumerateFiles(Server.MapPath("~/Content/images/thumbs")); 

vous obtenez un IEnumerable<string> sur lequel vous pouvez itérer sur la vue:

@model IEnumerable<string> 
<ul> 
    @foreach (var fullPath in Model) 
    { 
     var fileName = Path.GetFileName(fullPath); 
     <li>@fileName</li> 
    } 
</ul> 
+3

Si vous avez un problème avec la recherche de _Server_, vérifiez cette question: [Impossible d'utiliser Server.MapPath] (http://stackoverflow.com/questions/11105768/cannot-use-server-mappath) – Alex

+0

Pouvez-vous servir ces fichiers en fournissant un lien vers le chemin complet, ou avez-vous besoin d'un gestionnaire pour cela? – JsonStatham

+0

@selectDistinct Vous ne savez pas exactement ce que vous voulez dire. Server.MapPath convertit le chemin virtuel en un chemin de répertoire physique. Bien sûr, le processus qui exécute le code a besoin du droit d'accéder à ce chemin. Le PO a demandé une liste de fichiers – slfan

Questions connexes