2014-03-13 3 views
0

웹 디렉토리에있는 모든 파일에 대한 링크 는 또한 다운로드 할 수있는 파일 (www.testsite.com/downloads)MVC4 목록과 나는 MVC4 사이트 (www.testsite.com/test)가

를 저장하기위한 별도의 디렉토리를

다운로드 디렉터리를 IIS에서 찾아 볼 수 있도록 구성했습니다.

디렉토리의 내용을 읽고 MVC에서 파일 목록을 생성하려면 어떻게해야합니까?

나는 DirectoryInfo GetFiles() 메쏘드에서 읽었지만 로컬 디렉토리에서만 작동하고/Downloads 디렉토리는 테스트 서버에 있습니다.

+1

''하지만 로컬 디렉토리에서만 작동하며/Downloads 디렉토리는 테스트 서버에 있습니다. "- 폴더가 웹 응용 프로그램과 동일한 서버에 없다면 어디 있습니까? 웹 애플리케이션은 어떻게 접근 할 수 있습니까? 웹 응용 프로그램이 해당 폴더를 볼 수없는 경우 해당 폴더의 파일 목록을 가져올 수 없습니다. 또한 디렉토리를 탐색 할 수 있다면 디렉토리에 링크 만하는 것이 좋을까요? IIS는 파일 목록을 만듭니다. – David

+0

내가 프로덕션에서 두 서버가 같은 서버에 있지만, 내 개발 환경 설명 할 수 있도록 디렉터리의 복사본이 없습니다. 또한 나는 디렉토리를위한 URL을 제공함으로써이 느슨한 결합을 갖는 것이 좋을 것이라고 생각했다. 난 그냥 C#에서 특정 URL에서 파일을 enumertate하는 간단한 방법이 될 것이라고 생각했습니다. 나는 꽤 지긋 지긋하기 때문에 기본 목록을 사용하지 않는다. 링크를 파싱하여 구문 분석하면 작동 할 것이라고 생각하고있다. – mmilan

답변

1

먼저 폴더의 값을 Web.config으로 만듭니다. 이런 식으로 뭔가 : 응용 프로그램 (지역 개발 인스턴스, 테스트 서버 인스턴스, 프로덕션 서버 인스턴스 등)에 해당 인스턴스의 Web.config 해당 인스턴스에 관련된 폴더를 지정 업데이트 줄의 주어진 예를 들어

<appSettings> 
    <add key="DownloadsDirectory" value="C:\path\to\folder" /> 
</appSettings> 

. 모두 동일한 폴더를 사용해야하는 것은 아니며, 각 폴더는 적절한 폴더를 사용할 수 있습니다. 따라서 개발 시스템은 프로덕션 서버의 폴더에 액세스 할 필요가 없으며 컴퓨터의 일부 디렉토리로 지정하면됩니다.

둘째, 해당 값을 디렉토리에서 읽을 때 사용하십시오. 예를 들어 :

var fileNames = Directory.GetFiles(ConfigurationManager.AppSettings["DownloadsDirectory"]); 

는 당연히 당신은 ConfigurationManager.AppSettings["DownloadsDirectory"]이 그것을 사용하기 전에 값이있는 경우 코드를 확인하려면, 그리고 값이 없다면 구성이 유효하지 오류를 올릴 수 있습니다. 값이 Directory.Exists() 인 다른 검사로 값을 사용하여 우연한 오류가 다시 나타나면 다시 오류를 일으킬 수 있습니다.

디렉토리의 파일에 대한 정보를 얻고 싶다면 Directory 또는 DirectoryInfo 또는 System.IO에있는 다른 많은 객체가 사용하려는 것입니다.