Как узнать имя страницы по умолчанию, отображаемой веб-сервером?
Я загружаю различные файлы через I/O-Streaming в своем Java-приложении. Получение и сохранение этих файлов работает хорошо, если у меня есть полный URL-путь, включая имя файла, но как я могу узнать имя файла индекса (как определено, например, в Apache? DirectoryIndex
) домена? Заголовок HTTP не предоставляет эту информацию и не URLConnection
метод.
Большое спасибо!
Всего хорошего
С.
2 ответа
Насколько я знаю, нет способа получить эту информацию. Спецификация HTTP не предоставляет этого, и я думаю, что это не плохо. Ваши клиенты запрашивают URL "/", веб-сервер должен решать, как с этим справиться, также нет необходимости возвращать имя файла.
Стоит также отметить (я уверен, что вы знаете об этом, но на всякий случай), что только потому, что URL выглядит /somedir/somefile.html
, это не значит, что это фактический файл обслуживается. Он может быть передан через прокси на другой хост, mod_rewrite и т. Д. - другими словами, имя является произвольным и не обязательно имеет какое-либо отношение к физическому имени на диске.
Короче говоря, я думаю, что вам лучше всего выбрать имя файла по умолчанию, например index.html
для тех случаев и придерживайтесь этого.
Единственный выход -
- Проверьте заголовок Content-Disposition и используйте его для генерации имени файла. Если сервер обслуживает файл, он установит этот заголовок. Например, http://server:port/DownLoadServlet URL может установить этот заголовок, чтобы указать имя как " Statement.pdf ".
- Если этот заголовок отсутствует, используйте эвристику для генерации имени файла. Это то, что браузеры делают для генерации имен файлов, таких как Doc[10].pdf Doc[12].pdf и т. Д.
- Используйте заголовок типа содержимого (если имеется), чтобы угадать расширение файла.