2

我正在通过我的 Java 应用程序中的 I/O 流下载各种文件。只要我有一个包含文件名的完整 URL 路径,接收和保存这些文件就可以很好地工作,但是我怎样才能找到DirectoryIndex域的索引文件的名称(例如,Apache's 中定义的)?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. 使用内容类型标头(如果可用)来猜测文件扩展名。
于 2011-03-14T16:17:39.423 回答