Как скачать файл вложения из JSP - PullRequest
2 голосов
/ 28 апреля 2010

Я хочу знать, как я могу загрузить любой файл со страницы JSP на основе расположения контента как вложение с почтового сервера.

Я хочу создать ссылку на странице JSP, и, нажав на эту ссылку, пользователь сможет скачать файл с почтового сервера. Ссылка должна быть для типа размещения содержимого . Как я могу сделать это в JSP?

Ответы [ 3 ]

4 голосов
/ 28 апреля 2010

Не используйте для этого JSP, это может привести к проблемам при использовании его для потоковой передачи двоичных файлов, поскольку все пробелы за пределами тегов <% %> будут также напечатаны в ответе, что приведет только к повреждению двоичного содержимого. Все, что вам нужно сделать, это просто поместить HTML-ссылку, например <a href="fileservlet/file.ext">, в JSP и использовать класс сервлета для выполнения всех задач обработки и потоковой передачи. Чтобы установить заголовок ответа, просто используйте HttpServletResponse#setHeader().

response.setHeader("Content-Disposition", "attachment;filename=name.ext");

Здесь вы можете найти базовый пример сервлета, который делает именно это: FileServlet.

0 голосов
/ 28 мая 2012
URL url = new URL("http://localhost:8080/Works/images/abt.jpg");

            //for image 
            response.setContentType("image/jpeg");
            response.setHeader("Content-Disposition", "attachment; filename=icon" + ".jpg");

            //for pdf
            //response.setContentType("application/pdf");
            //response.setHeader("Content-Disposition", "attachment; filename=report" + ".pdf");

            //for excel sheet
            //  URL url = new URL("http://localhost:8080/Works/images/address.xls");
            //response.setContentType("application/vnd.ms-excel"); 
            //response.setHeader("Content-disposition", "attachment;filename=myExcel.xls");


            URLConnection connection = url.openConnection();
            InputStream stream = connection.getInputStream();

            BufferedOutputStream outs = new BufferedOutputStream(response.getOutputStream());
            int len;
            byte[] buf = new byte[1024];
            while ((len = stream.read(buf)) > 0) {
                outs.write(buf, 0, len);
            }
            outs.close();
0 голосов
/ 28 апреля 2010

Предлагаю вам немного разбить этот вопрос.

Знаете ли вы, как получить доступ к вложениям из обычной Java-программы? Как взаимодействовать с почтовым сервером и т. Д.? Если вы знаете, что это должно быть легкое упражнение, чтобы предоставить вложение в загружаемом формате через jsp. Хотя я настоятельно рекомендую вам сделать обычный сервлет, так как вы вряд ли будете использовать дополнительные механизмы вокруг jsp.

Просто убедитесь, что вы установили тип контента в соответствии с тем, что загружается:

В JSP: <%@page contentType="image/png" %>

В сервелте: response.setContentType("image/png");

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