2010-01-11 20 views
16

En mi aplicación MVC tengo las siguientes rutas;Obtener archivos en una carpeta

  • /content/imágenes/full
  • /content/imágenes/pulgares

¿Cómo podría, en mi # controlador C, obtener una lista de todos los archivos dentro de la carpeta mis pulgares?

Editar

Es Server.MapPath siendo la mejor manera?

Tengo esto ahora DirectoryInfo di = new DirectoryInfo(Server.MapPath("/content/images/thumbs")); pero siento que no es la manera correcta.

¿Existe alguna práctica recomendada en MVC para esto o lo anterior sigue siendo correcto?

+1

El anterior ('Server.MapPath') es correcto y aceptable en mi opinión. –

Respuesta

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

Eso obtendrá todos los archivos de un directorio en una matriz de cadenas.

+2

@Daniel no puedo hacer que esto funcione. se asigna a c: \ content \ images \ thumbs en lugar de a nivel de mi aplicación web. – griegs

+0

¿Puede proporcionar más información sobre lo que está tratando de hacer? Parece que está intentando devolver una lista de rutas de archivos a la vista. En ese caso, en la vista, intente usar '<% = Server.MapPath (filePath)%>', donde filePath es una ruta local. –

+0

Vaya, solo me di cuenta de que 'Server.MapPath()' en realidad convierte una ruta del servidor en una ruta de archivo. Buscando otras soluciones ahora ... –

38

.NET 4.0 tiene un método más eficiente para esto:

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

se obtiene una IEnumerable<string> en el que se puede recorrer en la vista:

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

Si tiene problemas para encontrar _Server_, revise esta pregunta: [No se puede usar Server.MapPath] (http://stackoverflow.com/questions/11105768/cannot-use-server-mappath) – Alex

+0

Puede servir estos archivos proporcionando un enlace a la ruta completa, o necesitas un controlador para eso? – JsonStatham

+0

@selectDistinct No estoy seguro de lo que quiere decir. Server.MapPath convierte la ruta virtual en una ruta de directorio físico. Por supuesto, el proceso que ejecuta el código necesita el derecho de acceder a este camino. El OP pidió una lista de archivos – slfan

Cuestiones relacionadas