2017-01-13 2 views
1

Я использую intellij Idea, и я сохранил файл pdf в папке ресурсов. Я хочу отобразить этот pdf-файл в браузере.Показать файл Pdf в браузере с помощью Servlet

public class GetDocumentation extends HttpServlet { 
    private static final Logger log = Logger.getLogger(GetDocumentation.class); 
@Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    InputStream pdf_path = this.getClass().getResourceAsStream(ApplicationProperties.getProperty("PDF_PATH")); 

    resp.setContentType("application/pdf"); 
    resp.addHeader("Content-Disposition", "attachment; filename=Documentation.pdf"); 
    OutputStream responseOutputStream = resp.getOutputStream(); 

    byte[] buf = new byte[4096]; 
    int len = -1; 

    while ((len = pdf_path.read(buf)) != -1) { 
     responseOutputStream.write(buf, 0, len); 
    } 
    responseOutputStream.flush(); 
    responseOutputStream.close(); 
    } 
} 


<a href="/documentation">Documentation</a> 

Я использую сервлет Jsp, и я звоню «/ documentation». И мой файл получает рендеринг, но он пуст. Я что-то делаю неправильно?

+0

Как установить заголовок Content-Desposition, файл не должен отображаться в браузере. Браузер должен отображать диалог открытия/сохранения. Вы уверены, что ваш код на стороне сервера находит файл и отправляет его в ответ? У вас нет каких-либо исключений на стороне сервера? – zaerymoghaddam

ответ

0

inline Content-Disposition должен использоваться для отображения документа. Заменить "attachment" с "inline":

resp.addHeader("Content-Disposition", "inline; filename=Documentation.pdf");