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

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

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

Всего хорошего
С.

2 ответа

Решение

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

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

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

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

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