2

JavaアプリケーションのI/Oストリーミングを介してさまざまなファイルをダウンロードしています。これらのファイルの受信と保存は、ファイル名を含む完全なURLパスがある限りうまく機能しますDirectoryIndexが、ドメインのインデックスファイル(たとえば、Apacheで定義されている)の名前を見つけるにはどうすればよいですか?HTTPヘッダーはこの情報を提供せず、URLConnectionメソッドも提供しません。

どうもありがとう!

よく
S。

4

2 に答える 2

5

私の知る限り、この情報を取得する方法はありません。HTTP仕様では提供されていませんが、これは悪いことではないと思います。クライアントはURL「/」を要求します。それを処理する方法はWebサーバー次第であり、ファイル名を返す義務もありません。

また、URLがのように見えるからといって、それが実際に提供されているファイルで/somedir/somefile.htmlあるとは限らないことも指摘しておく価値があります(念のために知っていると思いますが) 。プロキシを介して別のホスト、mod_rewriteなどに提供される可能性があります。つまり、名前は任意であり、必ずしもディスク上の物理名とは関係ありません。

要するに、あなたの最善の策は、例えばindex.htmlそれらの場合のためにデフォルトのファイル名を選び、それに固執することだと思います。

于 2011-03-14T15:54:36.200 に答える
1

唯一の方法は次のとおりです。

  1. Content-Dispositionヘッダーを検査し、それを使用してファイル名を生成します。サーバーがファイルを提供している場合、サーバーはこのヘッダーを設定します。たとえば、http:// server:port / DownLoadServlet URLは、名前を「statement.pdf」として示すようにこのヘッダーを設定する場合があります。
  2. このヘッダーが欠落している場合は、ヒューリスティックを使用してファイル名を生成します。これは、ブラウザがDoc [10] .pdf Doc[12].pdfなどのファイル名を生成するために行うことです。
  3. content-typeヘッダー(使用可能な場合)を使用して、ファイル拡張子を推測します。
于 2011-03-14T16:17:39.423 に答える