2011-03-24 14 views

答えて

8

URL自体に「ファイル」または「ディレクトリ」という概念はありません。 URLの内容は、要求されたときにサーバーが応答するものによって定義されます。 MIMEタイプがapplication/pdfのものを取得した場合、URLはPDFファイルを表します。あなたが他のものを手に入れたら、それはPDFファイルではありません。

+1

Apacheは静的ディレクトリをtext/htmlとして提供しているため、どちらも役に立ちません。 –

+0

私はhttprequestを作成し、応答を取得し、応答のヘッダーにMIMEタイプを探していますか?もしpdfへのhttprequestをやっているのであれば、ファイルをダウンロードするのと同じですか? –

+1

@ Yannick Wald:はい、サーバーに尋ねる必要があります。ただし、ファイル全体をダウンロードすることなく、HTTPヘッダーを取得するHEAD要求を行うことができます(ファイルのダウンロードはGET要求になります)。 –

2

URL/URI仕様、HTTP仕様、MIMEタイプレジストリのいずれにも「ディレクトリ」の概念はありません。

ウェブサーバーにはというメッセージがあります。は、その意味を知っていてもURLがディレクトリに解決されるとは限りません。 (そして多くの場合、ウェブサーバは、ディレクトリ自体について/ケアを知っていません。例えば、典型的なRESTfulなWeb APIは、概念を認識しません。)

あなたのオプションは次のとおりです。

  • フェッチするようにしてください物事をどのようなコンテンツの種類を参照してください。しかし、 "ディレクトリ"はWebサーバによって何かのようにレンダリングされるかもしれないことに留意してください。そうすれば、ディレクトリをこのように非ディレクトリと確実に区別することは(一般的に)不可能です。

    ファイルのダウンロードを避けたい場合は、GET要求ではなくHEAD要求を送信できます。これには、URLConnectionではなく完全なHTTPクライアントライブラリが必要です。

  • "ディレクトリ"の概念が不要なようにアプリケーションの設計と実装を変更してください。

  • アプリケーションを変更して、は、「ディレクトリ」と「純粋にURLに基​​づいたファイル」を決定します。 (一般的なケースでは、これは動作しません...あなたが区別できるようにURL名の部分に普遍的に観察される規則がないためです)。

  • URLスキーム/プロトコルを使用して「ディレクトリ」は明確に定義された概念です。たとえば、 "file:"または "ftp:"などです。

0

URLから戻ってくるものは、基本的に「ファイル」または「ディレクトリ」ではありません。最高でも、コンテンツタイプのデータストリームです。一般に、ファイルシステムに保存するか、または表示専用に一時ストアに保存するかのいずれかによって、クライアント側の「ファイル」になります。基本的には、Webサーバーが何かがHTTPを使用するディレクトリであることをクライアントに伝える方法はありません。

"ディレクトリ"(おそらくURLに基​​づいて、恐らくファイル拡張子がない)を推測するためにクライアント側のビジネスロジックを作成するか、またはこれに対して別のプロトコルを使用する必要があります。

関連する問題