我正在尝试使用servlet和jsp在浏览器窗口中打开pdf文件。点击jsp按钮,我调用一个servlet,然后通过该servlet尝试在浏览器上显示pdf文件。
以下是我正在尝试的代码:
jsp文件:
<form action="DisplayPDF" method="post" class="register">
<p><button type="submit" class="button">Click To Add »</button></p>
</form>
doPost方法中的servlet部分:
response.setContentType("application/pdf");
PrintWriter out = response.getWriter();
response.setHeader("Content-Disposition", "inline; filename=bill.pdf");
FileOutputStream fileOut = new FileOutputStream("D:\\Invoice\\Invoice_1094.pdf");
fileOut.close();
out.close();
请让我知道我在哪里做错了。 提前谢谢。
答案 0 :(得分:1)
您正在做的是在文件"D:\\Invoice\\Invoice_1094.pdf"
上打开一个OutputStream并获取对servlet reaponse编写器的引用,但实际上从不向它们写任何内容。
我假设您要提供驻留在服务器上的文件"D:\\Invoice\\Invoice_1094.pdf"
。为此,您必须阅读其内容并将其写入servlet的输出流。请注意我使用的是servlet的OutputStream,而不是它的Writer。
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=bill.pdf");
OutputStream out = response.getOutputStream();
try (FileInputStream in = new FileInputStream("D:\\Invoice\\Invoice_1094.pdf")) {
int content;
while ((content = in.read()) != -1) {
out.write(content);
}
} catch (IOException e) {
e.printStackTrace();
}
out.close();