通过URL传递PDF名称参数显示PDF

时间:2023-03-09 03:32:35
通过URL传递PDF名称参数显示PDF
 1 <%@ page language="java" import="java.util.*,java.io.*"
2 pageEncoding="UTF-8"%>
3 <%
4 String path = request.getContextPath();
5 String basePath = request.getScheme() + "://"
6 + request.getServerName() + ":" + request.getServerPort()
7 + path + "/";
8 %>
9 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
10 <html>
11 <head>
12 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
13 <title>PDF文件显示</title>
14 </head>
15 <%
16 out.clear();
17 out = pageContext.pushBody();
18 response.setContentType("application/pdf");
19
20 request.setCharacterEncoding("UTF-8");// 设置接收的字符集
21
22 try {
23
24 //这块由于中文参数的编码问题导致参数传递出现bug 如果解决这个问题则迎刃而解
25 String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"UTF-8");//但是这个对于有特殊字符的文件名称而言并不可靠
26 String strPdfPath = new String("C:/Users/1101399/Desktop/PDF/" + name);
27 //判断该路径下的文件是否存在
28 File file = new File(strPdfPath);
29 if (file.exists()) {
30 DataOutputStream temps = new DataOutputStream(response.getOutputStream());
31 DataInputStream in = new DataInputStream(new FileInputStream(strPdfPath));
32
33 byte[] b = new byte[2048];
34 while ((in.read(b)) != -1) {
35 temps.write(b);
36 temps.flush();
37 }
38
39 in.close();
40 temps.close();
41 } else {
42 out.print(strPdfPath + " 文件不存在!");
43 }
44
45 } catch (Exception e) {
46 out.println(e.getMessage());
47 }
48 %>
49 <body>
50 <br>
51 </body>
52 <script type="text/javascript">
53 </script>
54 </html>

我们在调用这个jsp界面时只需要传入对应的文件名称参数即可实现显示对应的PDF文件。

又及:

如果我们想要确切的使用web项目发布之后服务器的文件则将PDF的文件地址换位如下

 String strPdfPath = new String(request.getSession().getServletContext().getRealPath("/") + "/WEB-INF/jsp/wareHouse/" + name);
我们通过
 request.getSession().getServletContext().getRealPath("/")

来确定服务器的根文件目录

这块也换成任何服务器可以访问到的文件地址,这样我们可以将文件存储于项目文件分离便于管理