скачать сервлет pdf, используя расположение контента, не работает нормально с IE, Chrome и Firefox, но не в Opera - PullRequest
0 голосов
/ 13 сентября 2011

Я использую контент для загрузки pdf файла из моего сервлета. Мой код прекрасно работает для Chrome, Firefox и IE, но проблема в том, что когда я пытаюсь скачать PDF-файл с помощью Opera, он удаляет расширение PDF и добавляет HTM. Вот мой код:

        String filename = "abc.pdf";
        String filepath = "/pdf/" + filename;
        System.out.println("filepath "+filepath);
        resp.addHeader("content-disposition", "attachment; filename=" + filename);

        ServletContext ctx = getServletContext();
        InputStream is = ctx.getResourceAsStream(filepath);

        System.out.println(is.toString());
        int read = 0;

        byte[] bytes = new byte[1024];

        OutputStream os = resp.getOutputStream();           
        while ((read = is.read(bytes)) != -1) {
            os.write(bytes, 0, read);
        }
        System.out.println(read);

        os.flush();
        os.close();
        }catch(Exception ex){
            logger.error("Exception occurred while downloading pdf -- "+ex.getMessage());
            System.out.println(ex.getStackTrace());
        }

1 Ответ

2 голосов
/ 13 сентября 2011

Вам, вероятно, следует установить тип содержимого ответа на application/pdf, чтобы браузер знал, что загруженный файл - это не файл HTML, а файл PDF.

См. ServletResponse.setContentType().

...