2010-12-04 2 views
2

MVC 2에서 ASP.NET을 사용하고 있으며 로컬 파일 URL을 서버 주소로 변환하는 데 문제가 있습니다. 그것은 상당히 간단하고 일반적인 작업처럼 보일 수 있지만 Google 검색은 나에게 좋은 답변을 제공하지 않습니다. (어쩌면 내가 검색 빨아)asp.net의 서버에서 로컬 파일의 http url 경로를 가져옵니다.

나는보기에서 HTML 양식에서 파일을 가져 와서 디스크에 저장 컨트롤러가 있습니다. 이 파일의 실제 URL을보기로 되돌려 보내야합니다. 어떤 방법을 사용하든 항상 http 경로 대신 파일의 로컬 경로가있는 문자열을 얻습니다.

일단 프로젝트가 배포되면 url이 http 주소로 변환 될 수 있다고 생각하지만 디버깅 할 때 아무 것도 하드 코드하지 않아도 서버 주소가 필요합니다.

string url = Url.RequestContext.HttpContext.Server.MapPath("~/Content/Files/" + Path.GetFileName(file.FileName)); 
// outputs: "C:\\Users\\xxx\\Documents\\Visual Studio 2010\\Projects\\[ProjectName]\\Content\\Files\\file.png" 
// whereas i'd like something like "http://localhost/Content/Files/file.png" instead 

아이디어 :

어떤 컨트롤러 메소드에서 다음과 같은 예를 생각해?

+0

을'Server.MapPath'는 로컬 파일을 반환, 로컬 파일에 대한 URL을 매핑합니다. 사용하지 마십시오. – Oded

답변

3

이 파일을 저장할 위치에 따라 다릅니다. 가상 디렉터리 루트 외부에있는 디렉터리에 저장하는 경우 액세스 할 수 없습니다. 파일은 단순히 Content 방법을 사용할 수 HTTP를 통해 액세스 할 수있는 폴더 안에있는 경우 :

string url = Url.Content("~/Content/Files/foo.txt"); 
+0

파일을 Content/Files 폴더에 저장합니다. 차라리 내보기에서 Url.Content를 사용하는 대신 파일의 URL을 반환 할 수 있습니다. 이것에 대한 이유는 내가 자바 스크립트에서 URL로 추가 작업을하고 싶습니다. (URL을 [BB] 코드로 변환하면 작업중인 채팅 응용 프로그램의 텍스트 상자에 삽입됩니다.) – Arch

+0

컨트롤러에서 Url.Content를 사용할 수 있습니다. Url은 컨트롤러의 속성입니다. –

+0

내 컨트롤러에서 Url.Content를 사용하여 서버에 대한 기본 URL을 얻을 수 있습니까? ie : http : // localhost/theApp? – Arch

관련 문제