2011-03-24 5 views

답변

8

URL 자체에는 "파일"또는 "디렉토리"라는 개념이 없습니다. URL의 내용은 요청시 서버가 응답 한 내용으로 정의됩니다. MIME 유형이 application/pdf 인 항목을 얻으면 URL은 PDF 파일을 나타냅니다. 다른 것을 얻으면 PDF 파일이 아닙니다.

+1

Apache는 정적 디렉토리를 text/html로 제공하므로 도움이되지 않습니다. –

+0

그래서 나는 httprequest를 만들고 응답을 받고 응답의 헤더에서 MIME 유형을 찾고 있습니까? 만약 pdf에 httprequest를하고 있다면, 파일을 다운로드하는 것과 똑같은가요? –

+1

@ Yannick Wald : 예, 서버에 질문해야합니다. 그러나 HEAD 요청을 수행하여 전체 파일을 다운로드하지 않고 HTTP 헤더 만 검색 할 수 있습니다 (파일 다운로드는 GET 요청 일 수 있음). –

2

URL/URI 스펙, HTTP 스펙 또는 MIME 유형 레지스트리에 단순히 "디렉토리"라는 개념이 없습니다.

그래서 웹 서버는 클라이언트에게을 알려주지 않으므로 은 URL이 디렉토리를 결정한다는 것을 의미합니다. (그리고 대부분의 경우, 웹 서버는 디렉토리 자체에 대해 신경/모르는, 예를 들어 전형적인 RESTful 웹 API는 개념을 인식하지 못합니다.)

귀하의 옵션은 다음과 같습니다

  • 시도를 가져 콘텐츠 유형을 확인하십시오. 그러나 "디렉토리"가 웹 서버에 의해 렌더링 될 수 있다는 것을 명심하십시오. 이렇게하면 디렉토리를 비 디렉토리와 구분하는 것이 일반적으로 불가능합니다.

    파일을 다운로드하지 않으려면 GET 요청 대신 HEAD 요청을 보낼 수 있습니다. 이를 위해서는 URLConnection이 아닌 완전한 HTTP 클라이언트 라이브러리가 필요합니다.

  • 응용 프로그램 설계 및 구현을 변경하여 "디렉토리"개념이 필요하지 않도록하십시오.

  • 응용 프로그램을 변경하여 은 "디렉토리"와 "URL"만을 기준으로 한 "파일"을 결정합니다. (일반적으로이 방법은 작동하지 않습니다 ... 구별을 허용 할 수있는 URL 이름 부분에 대해 보편적으로 관례가 없기 때문에.

  • URL 스키마/프로토콜을 사용하여 "디렉토리"는 잘 정의 된 개념입니다. 예 : "file :"또는 "ftp :"

0

URL에서 돌아 오는 것은 본질적으로 "파일"또는 "디렉토리"가 아닙니다. 기껏해야 콘텐츠 유형이있는 데이터 스트림입니다. 일반적으로 클라이언트 측에서 파일 시스템이나 임시 저장소에 저장하여 디스플레이 전용으로 "파일"이됩니다. 기본적으로 웹 서버가 클라이언트에게 HTTP를 사용하는 디렉토리인지를 알릴 방법은 없습니다.

"디렉토리"(아마도 URL을 기반으로 파일 확장자가 없을 수도 있습니다)를 유추하거나 다른 프로토콜을 사용하도록 클라이언트 측 비즈니스 로직을 만들어야합니다.

관련 문제