2010-01-11 10 views
16

내 MVC 응용 프로그램에서 다음 경로가 있습니다.폴더의 파일 가져 오기

  • /컨텐츠/이미지/엄지 손가락

전체

  • /컨텐츠/이미지/어떻게 내 C#을 컨트롤러에, 폴더 내 엄지 손가락 내의 모든 파일의 목록을 얻을 것? 는 Server.MapPath는 여전히 가장 좋은 방법

    편집

    인가?

    나는 지금이 있습니다 DirectoryInfo di = new DirectoryInfo(Server.MapPath("/content/images/thumbs"));하지만 올바른 방법이 아니라고 생각합니다.

    여기에는 MVC의 모범 사례가 있습니까? 아니면 위의 사항이 여전히 맞습니까?

  • +1

    위 ('Server.MapPath' :

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

    당신은 당신이보기에 반복 할 수있는 상 IEnumerable<string>를 얻을 수) 제 의견으로는 정확하고 수용 가능합니다. –

    답변

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

    이렇게하면 디렉토리의 모든 파일을 문자열 배열로 가져옵니다.

    +2

    @ 대니얼 나는 이것을 작동시키지 못합니다. 웹 응용 프로그램 수준이 아닌 c : \ content \ images \ thumbs에 매핑됩니다. – griegs

    +0

    당신이하려는 일에 대해 더 많은 정보를 제공해 줄 수 있습니까? 보기로 파일 경로 목록을 반환하려는 것 같습니다. 이 경우,보기에서'<% = Server.MapPath (filePath) %>'를 사용해보십시오. 여기서 filePath는 로컬 경로입니다. –

    +0

    와우,'Server.MapPath()'가 실제로 서버 경로를 파일 경로로 변환하는 것으로 나타났습니다. 다른 솔루션을 찾고 있습니다 ... –

    38

    .NET 4.0이에 대한보다 효율적인 방법을 가지고있다 :

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

    _Server_을 (를) 찾는 데 문제가있는 경우 [Server.MapPath를 사용할 수 없음] (http://stackoverflow.com/questions/11105768/cannot-use-server-mappath) – Alex

    +0

    다음 파일을 제공하여이 파일을 제공 할 수 있습니까? 전체 경로에 대한 링크 또는 해당 처리기가 필요합니까? – JsonStatham

    +0

    @selectDistinct 무슨 뜻인지 확실치 않습니다. Server.MapPath는 가상 경로를 실제 디렉토리 경로로 변환합니다. 물론 코드를 실행하는 프로세스는이 경로에 액세스 할 수있는 권한이 필요합니다. OP는 파일 목록을 요구했습니다. – slfan