Как узнать имя страницы по умолчанию, отображаемой веб-сервером? - PullRequest
2 голосов
/ 14 марта 2011

Я загружаю различные файлы через I / O-Streaming в моем Java-приложении.Получение и сохранение этих файлов работает хорошо, если у меня есть полный URL-путь, включая имя файла, но как я могу узнать имя индексного файла (как определено, например, в Apache DirectoryIndex) домена?Заголовок HTTP не предоставляет эту информацию и метод URLConnection.

Большое спасибо!

Будьте здоровы
S.

Ответы [ 2 ]

5 голосов
/ 14 марта 2011

Насколько я знаю, нет способа получить эту информацию.Спецификация HTTP не предоставляет этого, и я думаю, что это не плохо.Ваши клиенты запрашивают URL «/», веб-сервер должен решать, как это сделать, нет необходимости возвращать и имя файла.

Также стоит указать (я уверен, что вы знаетеоб этом, но на всякий случай) то, что URL выглядит как /somedir/somefile.html, это не значит, что обслуживается файл фактический .Он может быть передан через прокси на другой хост, mod_rewrite и т. Д. - другими словами, имя является произвольным и не обязательно имеет какое-либо отношение к физическому имени на диске.

Короче говоря, я думаю, что вашеЛучше всего выбрать имя файла по умолчанию, например, index.html для этих случаев и придерживаться его.

1 голос
/ 14 марта 2011

Единственный выход:

  1. Проверьте заголовок Content-Disposition и используйте его для генерации имени файла. Если сервер обслуживает файл, он установит этот заголовок. Например. http://server:port/DownLoadServlet URL может установить этот заголовок для указания имени как "Statement.pdf".
  2. Если этот заголовок отсутствует, используйте эвристику для генерации имени файла. Это то, что браузеры делают для генерации имен файлов, таких как Doc [10] .pdf Doc [12] .pdf и т. Д.
  3. Используйте заголовок типа содержимого (если имеется), чтобы угадать расширение файла.
...