Как сделать ссылку на PDF как файл с Java - PullRequest
0 голосов
/ 09 марта 2011

Есть ли в Java / .jsp способ установить тип содержимого и т. Д., Чтобы ссылка на файл PDF предлагала пользователю сохранить его, а не открывать его в том же или другом окне в браузере? Я видел несколько примеров того, как сделать это на PHP, но не на Java.

Не уверен, что скомпилированные или интерпретированные языки могут иметь какое-либо отношение к тому, почему я не могу найти решение Java. (Случайная мысль)

Ответы [ 3 ]

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

Вам необходимо установить заголовки Content-Type и Content-Disposition. Предполагая, что response является HttpServletResponse объектом,

String filename = "foo.pdf";

response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

Подробнее: Код BalusC: FileServlet .

3 голосов
/ 09 марта 2011

Если PDF-файл не генерируется автоматически или не читается из внешнего местоположения сервлетом, а просто присутствует в общедоступном веб-контенте, тогда достаточно сопоставить Filter для шаблона URL-адреса *.pdf (или любого более конкретного / generic), который выполняет следующую работу в методе doFilter().

HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String filename = req.getRequestURI().substring(req.getRequestURI().lastIndexOf('/') + 1);
res.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
chain.doFilter(request, response);
2 голосов
/ 09 марта 2011

Вы хотите установить Content-disposition header

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...